{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 51,
   "id": "c979f719-a7bd-4392-86f9-f699220b2c93",
   "metadata": {},
   "outputs": [],
   "source": [
    "# this is for working with census tracts and VTD precincts\n",
    "from shapely.geometry import Point, LineString, Polygon\n",
    "import shapely\n",
    "import geopandas as gpd\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "from numpy import random\n",
    "from scipy.stats import norm\n",
    "import math\n",
    "#tractGeomFile = gpd.read_file(\"state_map_files/fl_pl2020_t.shp\")  #Boo!  Only has geometries.  do not use\n",
    "tractPopFile = gpd.read_file(\"state_map_files/co_pl2020_t.dbf\") #for Texas, need only this file"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "id": "a8590a2a-0527-45ab-a4b3-fe0fdaa45be2",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>STATEFP20</th>\n",
       "      <th>COUNTYFP20</th>\n",
       "      <th>TRACTCE20</th>\n",
       "      <th>GEOID20</th>\n",
       "      <th>NAME20</th>\n",
       "      <th>NAMELSAD20</th>\n",
       "      <th>MTFCC20</th>\n",
       "      <th>FUNCSTAT20</th>\n",
       "      <th>ALAND20</th>\n",
       "      <th>AWATER20</th>\n",
       "      <th>...</th>\n",
       "      <th>P0050002</th>\n",
       "      <th>P0050003</th>\n",
       "      <th>P0050004</th>\n",
       "      <th>P0050005</th>\n",
       "      <th>P0050006</th>\n",
       "      <th>P0050007</th>\n",
       "      <th>P0050008</th>\n",
       "      <th>P0050009</th>\n",
       "      <th>P0050010</th>\n",
       "      <th>geometry</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>08</td>\n",
       "      <td>027</td>\n",
       "      <td>970102</td>\n",
       "      <td>08027970102</td>\n",
       "      <td>9701.02</td>\n",
       "      <td>Census Tract</td>\n",
       "      <td>G5020</td>\n",
       "      <td>S</td>\n",
       "      <td>871112279</td>\n",
       "      <td>455018</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>POLYGON ((-105.46384 38.13092, -105.46294 38.1...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>08</td>\n",
       "      <td>027</td>\n",
       "      <td>970101</td>\n",
       "      <td>08027970101</td>\n",
       "      <td>9701.01</td>\n",
       "      <td>Census Tract</td>\n",
       "      <td>G5020</td>\n",
       "      <td>S</td>\n",
       "      <td>1041919696</td>\n",
       "      <td>2909132</td>\n",
       "      <td>...</td>\n",
       "      <td>11</td>\n",
       "      <td>11</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>POLYGON ((-105.79690 38.26505, -105.78341 38.2...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>08</td>\n",
       "      <td>001</td>\n",
       "      <td>008533</td>\n",
       "      <td>08001008533</td>\n",
       "      <td>85.33</td>\n",
       "      <td>Census Tract</td>\n",
       "      <td>G5020</td>\n",
       "      <td>S</td>\n",
       "      <td>3353029</td>\n",
       "      <td>36543</td>\n",
       "      <td>...</td>\n",
       "      <td>166</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>166</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>POLYGON ((-104.96644 39.89719, -104.96643 39.8...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>08</td>\n",
       "      <td>001</td>\n",
       "      <td>008534</td>\n",
       "      <td>08001008534</td>\n",
       "      <td>85.34</td>\n",
       "      <td>Census Tract</td>\n",
       "      <td>G5020</td>\n",
       "      <td>S</td>\n",
       "      <td>2341349</td>\n",
       "      <td>28063</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>14</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>14</td>\n",
       "      <td>POLYGON ((-104.94018 39.89514, -104.94017 39.8...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>08</td>\n",
       "      <td>001</td>\n",
       "      <td>008603</td>\n",
       "      <td>08001008603</td>\n",
       "      <td>86.03</td>\n",
       "      <td>Census Tract</td>\n",
       "      <td>G5020</td>\n",
       "      <td>S</td>\n",
       "      <td>1862820</td>\n",
       "      <td>57731</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>POLYGON ((-104.83226 39.98712, -104.83212 39.9...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 345 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "  STATEFP20 COUNTYFP20 TRACTCE20      GEOID20   NAME20    NAMELSAD20 MTFCC20  \\\n",
       "0        08        027    970102  08027970102  9701.02  Census Tract   G5020   \n",
       "1        08        027    970101  08027970101  9701.01  Census Tract   G5020   \n",
       "2        08        001    008533  08001008533    85.33  Census Tract   G5020   \n",
       "3        08        001    008534  08001008534    85.34  Census Tract   G5020   \n",
       "4        08        001    008603  08001008603    86.03  Census Tract   G5020   \n",
       "\n",
       "  FUNCSTAT20     ALAND20  AWATER20  ... P0050002 P0050003 P0050004 P0050005  \\\n",
       "0          S   871112279    455018  ...        0        0        0        0   \n",
       "1          S  1041919696   2909132  ...       11       11        0        0   \n",
       "2          S     3353029     36543  ...      166        0        0      166   \n",
       "3          S     2341349     28063  ...        0        0        0        0   \n",
       "4          S     1862820     57731  ...        0        0        0        0   \n",
       "\n",
       "  P0050006 P0050007 P0050008 P0050009 P0050010  \\\n",
       "0        0        0        0        0        0   \n",
       "1        0        0        0        0        0   \n",
       "2        0        0        0        0        0   \n",
       "3        0       14        0        0       14   \n",
       "4        0        0        0        0        0   \n",
       "\n",
       "                                            geometry  \n",
       "0  POLYGON ((-105.46384 38.13092, -105.46294 38.1...  \n",
       "1  POLYGON ((-105.79690 38.26505, -105.78341 38.2...  \n",
       "2  POLYGON ((-104.96644 39.89719, -104.96643 39.8...  \n",
       "3  POLYGON ((-104.94018 39.89514, -104.94017 39.8...  \n",
       "4  POLYGON ((-104.83226 39.98712, -104.83212 39.9...  \n",
       "\n",
       "[5 rows x 345 columns]"
      ]
     },
     "execution_count": 52,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tractPopFile.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "id": "a7a90b04-4b48-4ab8-9195-8d953907c3fb",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "there are 1447 popn tracts for CO\n"
     ]
    }
   ],
   "source": [
    "# EXTRACT TRACT GEOMETRIES AND POPULATIONS INTO LISTS, COMPUTE TRACT AREAS\n",
    "# If the population and geometry data are in one file, this should work.\n",
    "# see \"grabOHtract\" for alternate methods to marry data from multiple files\n",
    "STATE = \"CO\"\n",
    "tractGeom = tractPopFile['geometry']  #for some states, replace with tractGeomFile\n",
    "tractPop = tractPopFile['P0010001']\n",
    "tractVAP = tractPopFile['P0030001']   #NEW 3/2/22 - USE VAP\n",
    "# tractPop2 = tractPopFile['P0020001']   #not needed; confirmed that this matches P00100001 exactly\n",
    "tractHisp = tractPopFile['P0040002']   #NEW 3/2/22 - USE VAP\n",
    "tractBlack = tractPopFile['P0030004']  #NEW 3/2/22 - USE VAP\n",
    "nTracts = len(tractPop)\n",
    "print(\"there are {0} popn tracts for {1}\".format(nTracts, STATE) )\n",
    "tractArea = [0.]*nTracts\n",
    "for t in range (0,nTracts) :\n",
    "    tractArea[t] = tractGeom[t].area\n",
    "isSkippedTract = [0] *nTracts  #this will house a temporary list of tracts for manipulation\n",
    "tractPop = tractPop.to_numpy()  #to avoid panda overwrite grousing\n",
    "tractBlack= tractBlack.to_numpy()\n",
    "tractHisp = tractHisp.to_numpy()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "id": "c90b3908-e2e3-46b8-98e5-ae285eca1ee3",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "this is Hispanic population by total population CO voter-age population\n",
      "state pop= 5773714 VAP pct Hispanic is  0.1916357546696186\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#What is our correlation of Hispanic pop to total pop?\n",
    "print(\"this is Hispanic population by total population \"+STATE,\"voter-age population\")\n",
    "print(\"state pop=\",np.sum(tractPop), \"VAP pct Hispanic is \",np.sum(tractHisp)/np.sum(tractVAP) )\n",
    "fig, ax = plt.subplots()\n",
    "ax.set(xlabel=\"tract Voter Age Population\", ylabel=\"tract Hispanic pop\")\n",
    "x = [0,15000]\n",
    "y = [0,15000]\n",
    "plt.plot(tractVAP, tractHisp, marker='.',linestyle=\"none\")\n",
    "plt.plot(x,y,linestyle = 'dashed')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "id": "237df16d-af87-47ba-acb1-2ef5702c1406",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "this is voter-age Black population by total VAP CO\n",
      "total state pop= 5773714 pct Black is  0.038895009198204\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#What is our correlation of Black pop to total pop?\n",
    "print(\"this is voter-age Black population by total VAP \"+STATE)\n",
    "print(\"total state pop=\",np.sum(tractPop), \"pct Black is \",np.sum(tractBlack)/np.sum(tractVAP) )\n",
    "fig, ax = plt.subplots()\n",
    "ax.set(xlabel=\"tract VAP\", ylabel=\"tract Black VAP\")\n",
    "x = [0,15000]\n",
    "y = [0,15000]\n",
    "plt.plot(tractVAP, tractBlack, marker='.',linestyle=\"none\")\n",
    "plt.plot(x,y,linestyle = 'dashed')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "id": "10b208af-8eb0-45fa-9dc0-8873eb797200",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "this is a histogram of Census tract population for CO\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#for curiosity, let's plot the distribution of populations among tracts\n",
    "n_bins=50\n",
    "print(\"this is a histogram of Census tract population for \"+STATE)        \n",
    "fig, ax = plt.subplots(tight_layout=True)\n",
    "# We can set the number of bins with the *bins* keyword argument.\n",
    "ax.hist(tractPop, bins=n_bins)\n",
    "plt.show() "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "id": "4aac60d6-4cce-469b-b075-ad743acda38c",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "this is population by Census tract for CO\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#What is our distribution of tract populations by area?\n",
    "print(\"this is population by Census tract for \"+STATE)  \n",
    "plt.plot(tractPop, tractArea, marker='.',linestyle=\"none\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "id": "f159bf55-a25e-45c0-b7ea-4c21fbce9bb0",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'shapely.geometry.polygon.Polygon'> <class 'shapely.geometry.polygon.Polygon'>\n"
     ]
    }
   ],
   "source": [
    "print( type(tractGeom[0]),type(tractGeom[1]) )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "id": "5e8f8f92-a336-43e5-8ac5-20c657cb5857",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "looking for nonPolygons in census tract data\n",
      "89 3399 6.209384050001844e-05 nonPolygon tract no, pop, area\n",
      "218 1599 1.629908000002145e-05 nonPolygon tract no, pop, area\n",
      "313 1498 0.0005268614699999976 nonPolygon tract no, pop, area\n",
      "323 4739 0.00025392186199998907 nonPolygon tract no, pop, area\n",
      "375 10399 0.002973250759000002 nonPolygon tract no, pop, area\n",
      "749 2683 0.00015779702300002739 nonPolygon tract no, pop, area\n",
      "776 1478 0.001945821264000065 nonPolygon tract no, pop, area\n",
      "1029 3905 0.0015235769875000507 nonPolygon tract no, pop, area\n",
      "1310 3126 0.0002817867539999718 nonPolygon tract no, pop, area\n",
      "1382 4127 0.0004324480035000762 nonPolygon tract no, pop, area\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "print(\"looking for nonPolygons in census tract data\")\n",
    "notPoly = [0]*nTracts\n",
    "for m in range(nTracts):\n",
    "    if type(tractGeom[m]) != type(tractGeom[1]):  #assuming tract 1 is a single polygon\n",
    "        notPoly[m] = 1\n",
    "        print(m,tractPop[m], tractArea[m], \"nonPolygon tract no, pop, area\")\n",
    "        x = tractGeom[m].centroid.x\n",
    "        y = tractGeom[m].centroid.y\n",
    "        if y < 999 :  #let's zoom in on these\n",
    "            for geom in tractGeom[m].geoms :\n",
    "                xg,yg = geom.exterior.xy\n",
    "                plt.plot(xg,yg)\n",
    "            plt.text(x+0.0,y+0.01,m,fontsize=9)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "id": "d63968a2-afc1-4913-863c-4c415fb9c0b8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#convex-hull these right away  (decision for each state.  For CO, these are tiny)\n",
    "for m in range(nTracts):\n",
    "    if notPoly[m] == 1:\n",
    "        for geom in tractGeom[m].geoms :\n",
    "            xg,yg = geom.exterior.xy\n",
    "            plt.plot(xg,yg)\n",
    "        tractGeom[m] = tractGeom[m].convex_hull\n",
    "        x,y = tractGeom[m].exterior.xy\n",
    "        plt.plot(x,y)\n",
    "        notPoly[m] = 0\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "id": "72abde7f-085d-4c0a-abe3-29e8d6203b40",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>STATEFP</th>\n",
       "      <th>COUNTYFP</th>\n",
       "      <th>VTDST</th>\n",
       "      <th>NAME</th>\n",
       "      <th>PRECINCT</th>\n",
       "      <th>G20PREDBID</th>\n",
       "      <th>G20PRERTRU</th>\n",
       "      <th>G20PRELJOR</th>\n",
       "      <th>G20PREGHAW</th>\n",
       "      <th>G20PRECBLA</th>\n",
       "      <th>G20PREUWES</th>\n",
       "      <th>G20PREOOTH</th>\n",
       "      <th>G20USSDHIC</th>\n",
       "      <th>G20USSRGAR</th>\n",
       "      <th>G20USSLDOA</th>\n",
       "      <th>G20USSODOY</th>\n",
       "      <th>G20USSOEVA</th>\n",
       "      <th>G20USSOWRI</th>\n",
       "      <th>geometry</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>08</td>\n",
       "      <td>001</td>\n",
       "      <td>001226</td>\n",
       "      <td>Adams 226</td>\n",
       "      <td>6253001226</td>\n",
       "      <td>60</td>\n",
       "      <td>128</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>60</td>\n",
       "      <td>131</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>POLYGON Z ((-104.67850 39.97236 0.00000, -104....</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>08</td>\n",
       "      <td>001</td>\n",
       "      <td>001092</td>\n",
       "      <td>Adams 092</td>\n",
       "      <td>7243401092</td>\n",
       "      <td>653</td>\n",
       "      <td>579</td>\n",
       "      <td>22</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>6</td>\n",
       "      <td>649</td>\n",
       "      <td>572</td>\n",
       "      <td>37</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>POLYGON Z ((-104.96793 39.91400 0.00000, -104....</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>08</td>\n",
       "      <td>001</td>\n",
       "      <td>001089</td>\n",
       "      <td>Adams 089</td>\n",
       "      <td>7243101089</td>\n",
       "      <td>666</td>\n",
       "      <td>454</td>\n",
       "      <td>26</td>\n",
       "      <td>5</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>7</td>\n",
       "      <td>645</td>\n",
       "      <td>469</td>\n",
       "      <td>37</td>\n",
       "      <td>6</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>POLYGON Z ((-104.95210 39.92118 0.00000, -104....</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>08</td>\n",
       "      <td>001</td>\n",
       "      <td>001087</td>\n",
       "      <td>Adams 087</td>\n",
       "      <td>7243401087</td>\n",
       "      <td>690</td>\n",
       "      <td>467</td>\n",
       "      <td>31</td>\n",
       "      <td>5</td>\n",
       "      <td>4</td>\n",
       "      <td>6</td>\n",
       "      <td>6</td>\n",
       "      <td>668</td>\n",
       "      <td>475</td>\n",
       "      <td>50</td>\n",
       "      <td>5</td>\n",
       "      <td>7</td>\n",
       "      <td>1</td>\n",
       "      <td>POLYGON Z ((-104.95909 39.92851 0.00000, -104....</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>08</td>\n",
       "      <td>001</td>\n",
       "      <td>001088</td>\n",
       "      <td>Adams 088</td>\n",
       "      <td>7243101088</td>\n",
       "      <td>706</td>\n",
       "      <td>516</td>\n",
       "      <td>21</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>4</td>\n",
       "      <td>5</td>\n",
       "      <td>695</td>\n",
       "      <td>543</td>\n",
       "      <td>12</td>\n",
       "      <td>7</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>POLYGON Z ((-104.94884 39.92847 0.00000, -104....</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  STATEFP COUNTYFP   VTDST       NAME    PRECINCT  G20PREDBID  G20PRERTRU  \\\n",
       "0      08      001  001226  Adams 226  6253001226          60         128   \n",
       "1      08      001  001092  Adams 092  7243401092         653         579   \n",
       "2      08      001  001089  Adams 089  7243101089         666         454   \n",
       "3      08      001  001087  Adams 087  7243401087         690         467   \n",
       "4      08      001  001088  Adams 088  7243101088         706         516   \n",
       "\n",
       "   G20PRELJOR  G20PREGHAW  G20PRECBLA  G20PREUWES  G20PREOOTH  G20USSDHIC  \\\n",
       "0           1           1           0           0           0          60   \n",
       "1          22           3           2           1           6         649   \n",
       "2          26           5           1           2           7         645   \n",
       "3          31           5           4           6           6         668   \n",
       "4          21           1           3           4           5         695   \n",
       "\n",
       "   G20USSRGAR  G20USSLDOA  G20USSODOY  G20USSOEVA  G20USSOWRI  \\\n",
       "0         131           3           0           1           0   \n",
       "1         572          37           4           1           0   \n",
       "2         469          37           6           2           0   \n",
       "3         475          50           5           7           1   \n",
       "4         543          12           7           5           0   \n",
       "\n",
       "                                            geometry  \n",
       "0  POLYGON Z ((-104.67850 39.97236 0.00000, -104....  \n",
       "1  POLYGON Z ((-104.96793 39.91400 0.00000, -104....  \n",
       "2  POLYGON Z ((-104.95210 39.92118 0.00000, -104....  \n",
       "3  POLYGON Z ((-104.95909 39.92851 0.00000, -104....  \n",
       "4  POLYGON Z ((-104.94884 39.92847 0.00000, -104....  "
      ]
     },
     "execution_count": 61,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Now, let's read in the voting data  \n",
    "VTDdbf = gpd.read_file(\"state_map_files/co_vest_20.dbf\")\n",
    "VTDdbf.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "id": "3fe4ceba-8077-4485-ad0a-f8f2a5755040",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "3215 0.43061680507699845 3168959 = number of precincts, statewide GOP vote, total Trump+Biden votes\n"
     ]
    }
   ],
   "source": [
    "# Pull VTD geopandas data columns into arrays\n",
    "vtdGeom = VTDdbf['geometry'] \n",
    "# vtdGeom = VTDdbf['geometry'] #can't use VTDdbf because it uses alternate coordinate system\n",
    "vtdTrump = VTDdbf['G20PRERTRU']\n",
    "vtdBiden = VTDdbf['G20PREDBID']\n",
    "\n",
    "nPrecincts = len(vtdGeom)\n",
    "stateGOP = np.sum(vtdTrump)/(np.sum(vtdTrump) + np.sum(vtdBiden) ) \n",
    "print(nPrecincts, stateGOP, np.sum(vtdTrump) + np.sum(vtdBiden),\n",
    "      \"= number of precincts, statewide GOP vote, total Trump+Biden votes\" )\n",
    "vtdTrump = vtdTrump.to_numpy()  #these two lines try to avoid pandas complaints when we overwrite precinct data\n",
    "vtdBiden = vtdBiden.to_numpy()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "id": "c5c57f52-b8d2-4ef4-9d02-2429ed5e59da",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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lZWVPPfcc3HLrrrqKqZNm4ZZ/J9iJBJh5cqVLF60mAHZA2hoaCA3N5eZM2c2bfO5z32OrKysHoldeheLninqQAGze4Ea4OtAvru7Rf/VHXT3vGO2PR+4z92vis3fA+Du32nrGCUlJV5aWtqhuEQEFi1axPPPPx+3bMSIEZxzzjmcddZZTQli3u9+zzurVra6n4KCAr7whS90a6ySXGa21N1LkrGvRK5KKgQa3L3SzLKItgq+R7RP4VLgVWAGsKGF4kuA8WY2FtgJzAFuSUbgInK88847j/POi56t3bBhA88//zz79+9n/vz5vP3229x4440EAoGmpHBOw8lMveNKaupq+fWvf00oFGLChAlccEFLZ4blRNFui8HMPgQ8SvRy0wDwtLvfb2YXEb0MNQQcIXq56lIzG070stTZsfKzgR/Fyv/S3b/VXlBqMYgkT11dHW+//TavvPJK3PJhw4Zx++23pygqSbZkthg6fCqpJygxiCTfrl27eP/99wmFQhQWFqovr5/p0VNJItI/FBcXU1xcnOowpA/QBcoiIhJHiUFEROIoMYiISBwlBhERiaPEICIicZQYREQkjhKDiIjEUWIQEZE4SgwiIhJHiUFEROIoMYiISBw9K6kZd48fRsib/hMbzDSCWQRC7Q+NKCLSV53wicHDESoXbKbmrV1tbhegkmEZt2FWB3Meh4nX9FCEIiI964RODA3ltVQ8tY6GndUA5F4+mrgREJvN+JZtBHbURWdWKDGISP91wiaG+h2HKP+vFRCB/I+OI7tkGBZsaYjqmPvu/GB67YJuj09EJFVO2MRQu6wcIlB05xTSR+V2rPDpH+mWmEREeoMT96qkWOsgbUROQpuHbTD1wdOiMw213RWViEjKtdtiMLNM4HUgI7b9M+5+r5k9BUyIbZYPVLr7lBbKbwUOAWGgMVlDz3WFh536bVVYWgDaOHvUXDh7IunVf4nO1FZ0X3AiIimWyKmkOmCGu1ebWRrwppk97+6fOLqBmf0AONjGPi5z931djDVpjry3n/r3D5E7YxRmiWUGs/oPZg7t7qbIRERSr91TSR5VHZtNi72arva36DfrTcAT3RJhN6hduReArDOGJFwmPOrqpun1jzawedbMpMclItIbJNTHYGZBM1sBlAML3X1Rs9UXA3vcfUMrxR14ycyWmtncNo4x18xKzax07969CYbf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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#see NJ code for convex-hulling tracts\n",
    "#ID the non-polygon PRECINCTS\n",
    "notPolyVTD = [0]*nPrecincts\n",
    "for p in range(nPrecincts):\n",
    "    if type(vtdGeom[p]) != type(vtdGeom[0]):\n",
    "        notPolyVTD[p] = 1\n",
    "        for geom in vtdGeom[p].geoms:    \n",
    "            xs, ys = geom.exterior.xy\n",
    "            plt.plot(xs,ys)\n",
    "        #plt.text(vtdGeom[p].centroid.x, vtdGeom[p].centroid.y,p)\n",
    "    else:\n",
    "        hi = \"hi\"\n",
    "        #x,y = vtdGeom[p].exterior.xy\n",
    "        #plt.plot(x,y)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "id": "ea498c6a-d054-409e-92fb-cda921e2911f",
   "metadata": {},
   "outputs": [],
   "source": [
    "#prep for geography triage\n",
    "isSkippedTract = [0]*nTracts\n",
    "isSkippedPrecinct = [0]*nPrecincts  #will be used later"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "id": "5520a7c2-0560-421c-b5ef-bfd8aa9752b3",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0]\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# For potential later issues, identify and flag lakeshore low-population tracts.\n",
    "lakeTracts = [0]\n",
    "minTractPop = 20\n",
    "for m in range(nTracts):\n",
    "    if tractPop[m] < minTractPop:\n",
    "        x = tractGeom[m].centroid.x\n",
    "        y = tractGeom[m].centroid.y\n",
    "        x2,y2 = tractGeom[m].exterior.xy  #turn these two on to show state map\n",
    "        if y < 999 and x > -999 : #optional to exclude some areas from plotting\n",
    "            plt.plot(x2,y2,c=\"purple\")\n",
    "            plt.text(x, y,m, fontsize=9)\n",
    "        #plt.scatter(x,y)\n",
    "        if y > 9999:  #for Tennessee, these ALL appear to be interior\n",
    "            if lakeTracts == [0]:\n",
    "                lakeTracts = [m]\n",
    "                isSkippedTract[m] = 1\n",
    "            else:\n",
    "                if y > 34:  #m==99940 or m==999909: \n",
    "                    thisTract = \"interior\"\n",
    "                else:\n",
    "                    lakeTracts.append(m)\n",
    "                    isSkippedTract[m] = 1\n",
    "\n",
    "print(lakeTracts)  # assigned as skipped tracts as well\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "id": "3ded1b1f-5629-4d8f-826b-e037e5dcb3da",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "working on tract 200\n",
      "working on tract 400\n",
      "working on tract 600\n",
      "working on tract 800\n",
      "working on tract 1000\n",
      "working on tract 1200\n",
      "working on tract 1400\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXoAAAD4CAYAAADiry33AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8/fFQqAAAACXBIWXMAAAsTAAALEwEAmpwYAAAcrklEQVR4nO3df5Bd5X3f8fdndyUkflkEFopYZJGYcaIhIwE7smMaAuJHhOyAY9exmDhD63Y0dWDGxtN4xCStS+NOPR67A8nQuhpcDxkXA3bDWMYyWMHWUJoUkGKQkREgqzgIedBiWw4UI6G93/5xnrt7d/fcvWd379G95/B5zdy559dzzveevfu9z33Oc8+jiMDMzOproNcBmJlZuZzozcxqzonezKzmnOjNzGrOid7MrOaGeh1AnjPOOCNWrlzZ6zDMzCpj165dr0TEcN66vkz0K1euZOfOnb0Ow8ysMiT9uN06N92YmdWcE72ZWc050ZuZ1ZwTvZlZzTnRm5nVXOFEL2lQ0vclPZDmPyRpj6SGpNFZyq2X9KykfZI2dyNoMzMrbi41+o8Dz7TMPw18AHikXQFJg8AdwDXAKuB6SavmEaeZmc1ToX70kkaA9wL/EfgkQEQ8k9bNVnQtsC8i9qdt7wGuA344/5DbO/z6Ub679xCNdOdlAc3wJp7RlPnpmndtDmLq/MTy5nxMmSdyynTa57SDzti+3fKWde3ibiU05fU2/2ZTzk/rcoEmN56YzpbP3KZ1OVOWTyvb8jeYLZ7px8jKigGJAcGAsvIDLcvUXDfQOp9NzzxHrcsiZ1nr2YsZy6b/PVr30279XARBBDQiGG9k0+ONYDyCiGC8ka1rxOR2EZPvi4jWfUxOz+WW5EW3LLrLuR673eaz7WW+t1xvf6yZK9ptO/39ODigiffg4ABTprP3rxic9t5dPDTAu3/1dJYsGpzX65hN0R9M3QZ8Cjhljvs/B3ixZf4A8K68DSVtAjYBrFixYo6HyfzV3/2Y/7z9uXmVNTPrtU//3ir+xSXndX2/HRO9pPcBhyJil6TL5rj/vHpz7mdiRGwBtgCMjo7O66P5yLFxBgQ7/s3ls9SuZ9aSW2u1MLWGmc031+d/G5j81qCOZSZryrOv7xQD6lym+TpbX/NEjWTaN5DW89N6bibmgtzlM8pOqeU2i8aUv8PMePL2NXmMRmNqLbcxUYtN043sOVrWTTwaTPv2MO08tpyw1vPW+k11+t+gtbxm7mbaPmf9xttWa61wcGDym0w2PbWW2PpNqPnNqVlLnLJs2jepTopu2uFb/Zz3B9lrnc+O5lms7WvIW5q36cR7sgHjLe+/5rex6dNT3qcNeOPYOB/4L3/L60fHZ4ly/orU6C8BrpW0AVgCnCrpKxHxkQJlDwDntsyPAAfnHmZxAxIrTj+xzEOYmXXVkWPlJPimjhdjI+KWiBiJiJXARuC7BZM8wBPA+ZLOk7Q4ld8672jNzGzO5t2PXtLvSzoA/BbwLUkPpeXLJW0DiIhjwE3AQ2Q9du6LiD0LD9vMzIqa090rI2IHsCNN3w/cn7PNQWBDy/w2YNtCgjQzs/nzL2PNzGrOid7MrOac6M3Mas6J3sys5pzozcxqzonezKzmnOjNzGrOid7MrOac6M3Mas6J3sys5pzozcxqzonezKzmnOjNzGquVol+vmN0mpnVWa0SPcw+lJiZ2VtR7RK9mZlNVTjRSxqU9H1JD6T5X5G0XdLz6fm0NuVekPQDSU9K2tmtwM3MrJi51Og/TjYcYNNm4OGIOB94OM23c3lErImI0XnEaGZmC1Ao0UsaAd4L3Nmy+DrgrjR9F/D+rkZmZmZdUbRGfxvwKaDRsuysiPgJQHo+s03ZAL4jaZekTe0OIGmTpJ2Sdo6NjRUMy8zMOumY6CW9DzgUEbvmeYxLIuIi4BrgRkmX5m0UEVsiYjQiRoeHh+d5KDMzm65Ijf4S4FpJLwD3AOskfQV4WdLZAOn5UF7hiDiYng8B9wNruxC3mZkV1DHRR8QtETESESuBjcB3I+IjwFbghrTZDcA3ppeVdJKkU5rTwNXA012K3czMClhIP/rPAldJeh64Ks0jabmkbWmbs4BHJT0FPA58KyIeXEjAZmZ1I8r9pefQXDaOiB3AjjT9U+CKnG0OAhvS9H5g9UKDNDOz+fMvY83Mas6J3sysT0RJd2Z0ojcz67Gyb8boRG9mVnNO9GZmNedEb2bWJ8oaPMmJ3sysx8oeL6lWid4jCZqZzVSrRA/l/8LMzKxqapfozcyqqqxWCSd6M7MeU8kd6Z3ozcxqzonezKzmnOjNzPqE+9GbmdWU+9GbmdmCFE70kgYlfV/SA2n+VyRtl/R8ej6tTbn1kp6VtE/S5m4FbmZmxcylRv9x4JmW+c3AwxFxPvBwmp9C0iBwB3ANsAq4XtKq+YdrZlZfUVJP+kKJXtII8F7gzpbF1wF3pem7gPfnFF0L7IuI/RFxFLgnlTMzs6Rf7kd/G/ApoNGy7KyI+AlAej4zp9w5wIst8wfSshkkbZK0U9LOsbGxgmGZmVknHRO9pPcBhyJi1zz2n/c5lfvdJCK2RMRoRIwODw/P41BmZpZnqMA2lwDXStoALAFOlfQV4GVJZ0fETySdDRzKKXsAOLdlfgQ4uNCgzczqqGf96CPilogYiYiVwEbguxHxEWArcEPa7AbgGznFnwDOl3SepMWp/NauRG5mVhP9fK+bzwJXSXoeuCrNI2m5pG0AEXEMuAl4iKzHzn0RsWdhIZuZ2VwUabqZEBE7gB1p+qfAFTnbHAQ2tMxvA7YtJEgzM5s//zLWzKxP+H70BZR1IcPMrMpqleiB8u8OZGZWMfVL9GZmNkWtEn1Z94kwMzsuSmp/rlWiB7fcmFk1ldmVvnaJ3szMpqpXonfLjZnZDPVK9JR/u08zs7K4H72ZWY2VWUetVaJ3y42ZVVnP7l5ZNXK/GzOrIEm9HUrQzMzKJVyjNzOrNckXYwsJ39XMzCpKqLQafcf70UtaAjwCnJC2/3pEfFrSauCLwMnAC8AfRsQ/5pR/AXgVGAeORcRo16LPjbfMvZuZlUTl3calSI3+CLAuIlYDa4D1kt4N3AlsjojfBO4H/mSWfVweEWvKTvJmZlUlKK3tpsiYsRERr6XZRekRwDvJavoA24EPlhLhHLjlxsyqqudt9JIGJT0JHAK2R8RjwNPAtWmTDwHntikewHck7ZK0aZZjbJK0U9LOsbGxwi9gxn7mXdLMrHfK7BpeKNFHxHhErAFGgLWSLgA+CtwoaRdwCnC0TfFLIuIi4Jq0/aVtjrElIkYjYnR4eHiur8PMrPLK6lAyp143EXGYbHDw9RGxNyKujoiLga8CP2pT5mB6PkTWlr92IQHPGl9ZOzYzK5nUw370koYlLUvTS4Ergb2SzkzLBoA/I+uBM73sSZJOaU4DV5M1+ZRG7nZjZhUkettGfzbwPUm7gSfI2ugfAK6X9BywFzgIfBlA0nJJ21LZs4BHJT0FPA58KyIe7PaLMDOrOqmH/egjYjdwYc7y24Hbc5YfBDak6f3A6oWHWYx73ZhZVWU1+j5oo+93QbjXjZlVUy/b6KskAvevNLNK8v3o58B53syqqMyOJLVK9BHhXjdmVll90Y++3wW+qZmZVVPPb4FQFRFuujGzavLAIwUFbroxs2ryUIIFuUZvZlXlGn1BbqM3s6pyG31B2aehM72ZVVF5t0CoVaKHcI3ezCpJJQ4xVatE7zZ6M6sq/zK2oAi30ZtZdbnppoDspmbO9GZWPT0deKRKXKM3s6oS7kdfiG9eaWZV1euhBJdIelzSU5L2SLo1LV8t6e8k/UDSNyWd2qb8eknPStonaXO3X0CrrEbvVG9m1dProQSPAOsiYjWwBlgv6d3AncDmiPhNskG//2R6QUmDwB3ANcAqsuEHV3Up9hnK+tpjZla2MocS7JjoI/Naml2UHgG8E3gkLd8OfDCn+FpgX0Tsj4ijwD3AdQuOum2wbqM3s+rqaRu9pEFJTwKHyAYHfwx4Grg2bfIh4NycoucAL7bMH0jL8o6xSdJOSTvHxsYKhj9VI4IBZ3ozqyCV2HZTKNFHxHhErAFGgLWSLgA+CtwoaRdwCnA0p2he1s19KRGxJSJGI2J0eHi4UPDTvdkIhgad6M2sesqso86p101EHAZ2AOsjYm9EXB0RFwNfBX6UU+QAU2v6I8DB+YXa2ZvHGiwerFVHIjN7C+nZxVhJw5KWpemlwJXAXklnpmUDwJ8BX8wp/gRwvqTzJC0GNgJbuxT7DMcawSInejOrIKGeDiV4NvA9SbvJEvf2iHiArAfNc8Beslr6lwEkLZe0DSAijgE3AQ8BzwD3RcSe7r+MzJvjDRa56cbMKqjM2xQPddogInYDF+Ysvx24PWf5QWBDy/w2YNvCwizm6LGGa/RmVkkeeKSgrEZfq5dkZm8R2VCC5ahVVsza6N10Y2bVk9Xofa+bjtx0Y2aV5aEEi3lzvMGioVq9JDN7i/DAIwW9OR4sGnDTjZlVlC/GdnZsvMGQm27MrIKyi7Fuo++oEeAKvZlVkbtXzoGHEjSzKvJQggX5fvRmVlUeSrAgjxlrZlXlGn1BgRO9mVWX+9EX5kxvZtXT06EEq6Ssk2RmVjb/YKqwcNONmVWYL8Z2FOGGGzOrpjIvxna8H72kJcAjwAlp+69HxKclrSEbVWoJcAz444h4PKf8C8CrwDhwLCJGuxb9NL4Ya2ZV1dOBR4AjwLqIeE3SIuBRSd8G/gNwa0R8W9IG4HPAZW32cXlEvNKViDvwD6bMrIrKHEqwyAhTAbyWZhelR6THqWn52yhx0O+iyjpJZmZl63WNHkmDwC7gHcAdEfGYpE8AD0n6PFlb/3vaFA/gO5IC+G8RsWXhYbc/kJtuzKyKen6vm4gYj4g1wAiwVtIFwMeAmyPiXOBm4Ettil8SERcB1wA3Sro0byNJmyTtlLRzbGxsrq8jxemLsWZWUf0ylGBEHAZ2AOuBG4C/Tqu+BqxtU+Zgej4E3D/LdlsiYjQiRoeHh+cS1hRyld7MKqinQwlKGpa0LE0vBa4E9pK1yf9O2mwd8HxO2ZMkndKcBq4Gnu5K5DncRm9mVVVmHbVIG/3ZwF2pnX4AuC8iHpB0GLhd0hDwBrAJQNJy4M6I2ACcBdyfatlDwN0R8WD3X0bGad7MbKYivW52AxfmLH8UuDhn+UFgQ5reD6xeeJgF+e6VZlZRPb8YWyXuR29mVeShBAty042ZVZVr9AVF+KZmZlZNHnikoMD96M2smjyUoJlZ3blGX8zJJwzxi1++2eswzMzmTHgowUJGTlvKgZ//stdhmJnNWZnXF2uV6M857UReOuxEb2YV5aabzkZOW8pPfvFLxhvuaGlm1eKLsQWds2wpb44Hh159o9ehmJnNibtXFjRy2lIAXnI7vZlVTJkDj9Qq0Z924mIA97wxs8opcyjBWiX65lVr363YzKrGNfqCfEMzM6syt9HPgSv0ZlY1ZY6OV6tEP9l041RvZtXTs6YbSUskPS7pKUl7JN2alq+R9H8kPZkG9c4dC1bSeknPStonaXO3X4CZWR0ISmu7KVKjPwKsi4jVwBpgvaR3A58Dbo2INcC/S/NTpOEH7wCuAVYB10ta1Z3Q23N93syqpqcXYyPzWppdlB6RHqem5W8jGyx8urXAvojYHxFHgXuA6xYcdRu+F72ZVVWZA48UGRy8WTPfBbwDuCMiHpP0CeAhSZ8n+8B4T07Rc4AXW+YPAO9qc4xNpAHGV6xYUTT+XG6iN7Oq6flQghExnppoRoC1ki4APgbcHBHnAjcDX8opmlfHzn0lEbElIkYjYnR4eLhQ8DMP1jycM72ZVUvfDCUYEYeBHcB64Abgr9Oqr5E100x3ADi3ZX6E/CaernDTjZlVVU/vdSNpWNKyNL0UuBLYS5awfydttg54Pqf4E8D5ks6TtBjYCGztQtyzctONmVWPSmuLKNJGfzZwV2qnHwDui4gHJB0Gbpc0BLxBal+XtBy4MyI2RMQxSTcBDwGDwH+PiD1lvJDs2Nmz87yZVU2ZLRIdE31E7AYuzFn+KHBxzvKDwIaW+W3AtoWFWYxvgWBmVeabms2Bm27MrGrKrKbWKtH7YqyZVZUHHjEzqzkPJWhmVnOu0ZuZ1ZwHHjEzqzkPJWhmVneu0ZuZ1Zu7V5qZvRX4YqyZWX1ltykuRy0TfVl9Uc3MypLdptgXYztqniPf88bMqsbdKwtq1uR9KwQzq5q+GXik3zVP0oATvZlVTM+HEqyKxsTHoTO9mVWLa/QFuUZvZpXVy4FHJC0BHgFOSNt/PSI+Lele4J1ps2XA4TSA+PTyLwCvAuPAsYgY7UrkOSYuxrqR3swqqKwafZGhBI8A6yLiNUmLgEclfTsiPtzcQNIXgF/Mso/LI+KVBcba0cTF2LIPZGbWZWX2FiwylGAAr6XZRekx8bmjrPr8B2QDhPfUZI2+t3GYmc1VdpviHl6MlTQo6UngELA9Ih5rWf3bwMsR8Xyb4gF8R9IuSZtmOcYmSTsl7RwbGysY/lTNi7EDzvRmVjGix/3oI2I8tb+PAGslXdCy+nrgq7MUvyQiLgKuAW6UdGmbY2yJiNGIGB0eHi4W/fR9NCec582sYvpm4JGIOAzsANYDSBoCPgDcO0uZg+n5EHA/sHZ+oRaJL3t2njezqunpUIKShiUtS9NLgSuBvWn1lcDeiDjQpuxJkk5pTgNXA093Ie42mr+Mdao3s2ops0ZfpNfN2cBdkgbJPhjui4gH0rqNTGu2kbQcuDMiNgBnAfenxDsE3B0RD3Yr+OlcozezqirzXjdFet3sBi5ss+6f5yw7CGxI0/uB1QsLsbiJ38U605tZ5ZSXuGr5y1jfvdLMqqgvLsb2u2YfVNfozax6orTcVa9En56d582saiLKy131SvTO9GZWURHltUbUK9FP3OvGmd7MqiWI0nJXrRI9vteNmVWYa/QFuOXGzGymeiV634/ezGyGeiV6Dw5uZjZDvRK9b4FgZjZDvRJ9enaN3sxsUr0SvTvSm5nNUK9En55dozezqinrPjdQs0SP2+jNrMJ8C4QCwgOPmJnNUGSEqSWSHpf0lKQ9km5Ny++V9GR6vJAGD88rv17Ss5L2Sdrc5fincK8bM7OZiowwdQRYFxGvSVoEPCrp2xHx4eYGkr4A/GJ6wTQq1R3AVcAB4AlJWyPih90Jf6rwLRDMzGYoMsJUAK+l2UXpMXHZQFk7yR8A63KKrwX2pZGmkHQPcB1QTqJPz//ws9dZsmgwf5sOFzw6Dc47W/ky993JrHHN87ivvnGM/a+8xq8Nn8xJJ8z+Vlm2dBErzzipU5jWZRFBxOR7PyL7azf/pkFMTk9bFkz2VJsoU2CbmNxoxrIZZVqO3Xabie1aYp3lNbTuZ/I85Gyb1oms8jcgIWU3PRxo05ZxwtAgSxYNMDQwwIBgcEBIYnBADKR9ZI80PVCNWmWRGn2zZr4LeAdwR0Q81rL6t4GXI+L5nKLnAC+2zB8A3jXPWDs6YSj769109/fLOoTN4qxTT2DR4EDbD47Wf+zJZS3TLWumLp+5jA7bFjpey0zervP2VST+dvE0DaRk0zoYdGtibRacvmx6Erf+0PqBMCAYTB8GEgwMZPejbM6T/u6t74GB1ATx89ePsmzpolJiLJToI2IcWCNpGdlg3xdExNNp9fVMGyC8Rd7HXe7bVNImYBPAihUrioQ1w3t+7XS+dMMob7zZmHW72Zp2On0+d24War9Bp7Kdjz37FrOt7XjsnPU/+39v8tSLh7no7ctYtnRx27KNCB5/4WeMvXqkJZbJHbbuW7nL2mw7JSa13VeR/U3dNv9k5O2j0PFaZpSzcWs8karBjVQTlybLpzww5diaeJ66jJYyzfWtr7V1v8y2Tcuy5mvRlDJpWet5nLGNJuNqjXfKsTRxzLx4yNsmJ96JNdP23XrKs9c+uY8gaDSyxJOd96CRM8hHAEeOjfPLow3GI2g0gkYE443sb9WIYDz93RqNbLqRphvN6YlyaXriG1e2rPnNJYtn8oO8kSYuXnkaZSiU6Jsi4rCkHcB64GlJQ8AHgIvbFDkAnNsyPwIcbLPvLcAWgNHR0XnVWYYGB7jiN86aT1Fr459dPFJoO593s/5VpNfNcKrJI2kpcCWwN62+EtgbEQfaFH8COF/SeZIWAxuBrQuO2szMCivSj/5s4HuSdpMl7u0R8UBat5FpzTaSlkvaBhARx4CbgIeAZ4D7ImJPt4I3M7POFH14ZWd0dDR27tzZ6zDMzCpD0q6IGM1bV6tfxpqZ2UxO9GZmNedEb2ZWc070ZmY150RvZlZzfdnrRtIY8OMF7uYM4JUuhHO8VClex1qeKsVbpVihWvHOJ9a3R8Rw3oq+TPTdIGlnu65G/ahK8TrW8lQp3irFCtWKt9uxuunGzKzmnOjNzGquzol+S68DmKMqxetYy1OleKsUK1Qr3q7GWts2ejMzy9S5Rm9mZjjRm5nVXi0SvaQPSdojqSFpdNq6WyTtk/SspN9tWf5hSbtTuc/1eazXS/pBivdBSWf0Y6ySTpH0ZMvjFUm3HY9Y5xNvWr5Y0hZJz0naK+mDfRzrjrSseX7PPB6xzjfelvVbJT09fXk/xZr+r55K5b6Yhk/tu1glnSjpW+m9ukfSZwsdKNLQWlV+AL8BvBPYAYy2LF8FPAWcAJwH/AgYBE4H/gEYTtvdBVzRp7EOAYeAM9J2nwP+fT/GmlN+F3Bpv74P0rpbgc+k6YHmee7TWKdsezwf830vkI1AdzfwdD/HCpyangX8T2BjP8YKnAhcnrZZDPwv4JpOx6lFjT4inomIZ3NWXQfcExFHIuL/AvuAtcCvAs9FxFja7m+A41KTm0esSo+TlA2OeSpthmPsg1gnSDofOJPsjXhczDPejwL/KZVvRMRx+eXkQs5tL8wnXkknA58EPnP8Ip1frBHxj2mbIbIEelx6qcw11oh4PSK+l8oeBf6ebIjWWdUi0c/iHODFlvkDadk+4NclrUzj3r6fqWPb9kJurBHxJvAx4AdkCX4V8KXjH94U7c5rq+uBeyNVPXosN97mEJnAn0v6e0lfk9TrwW87ndsvp2abf5s++Htttnj/HPgC8PrxDqqNWc+tpIfIvj2/Cnz9+IY2Q8f/sfT+/T3g4U47m9Pg4L0k6W+Af5Kz6k8j4hvtiuUsi4j4uaSPAfcCDeBvyWr5XdHNWCUtIkv0FwL7gb8EbqFLtaRuxjptfiPwRwuJLffA3Y13iKw29L8j4pOSPgl8ni7FXcK5/cOIeEnSKWTNC38E/NXCI00H7u77dg3wjoi4WdLKLoU4edAS3rcR8buSlgD/A1gHbF9woJQTa6qgfhX4i4jY3ymGyiT6iLhyHsUOMLWmPkJq9oiIbwLfBJC0CRhfaIxNXY51TdrnjwAk3QdsXmCIE7p9XgEkrQaGImLXAsObocvx/pSstnl/Wv414F8uKMAWJbxnX0rPr0q6m6zZoWuJvsvx/hZwsaQXyPLMmZJ2RMRlC40Tynnfpv2+IWkrWdNJVxJ9SbFuAZ6PiNuK7KzuTTdbgY2STpB0HnA+8DhAs8eCpNOAPwbu7FmUmXaxvgSsktS8K91VZAOt91Lb85pcz7RB43ssN97UrPRN4LK03RXAD3sT4oTcWCUNKfW2St/y3gcct54ss2h3bv9rRCyPiJXAPyW7JnZZD+OE9uf2ZElnw0RNeQOwt4dxwuy56zPA24BPFN7b8biyXPYD+H2yT8AjwMvAQy3r/pTsivWztFydJktEP0yP43KFfQGx/muy5L6bLDGd3q+xpnX7gV+vyPvg7cAj6dw+DKzox1iBk8h6Me0G9gC3k9PTqV/inVZ2Jce3181cz+1ZwBMt5/Yvyb6R9mOsI2RNOM8AT6bHv+p0HN8Cwcys5uredGNm9pbnRG9mVnNO9GZmNedEb2ZWc070ZmY150RvZlZzTvRmZjX3/wFD+3qG7IeHmgAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#build basic CO map\n",
    "tractMAP = tractGeom[0] #uncomment for first time thru loop  **************\n",
    "for t in range(1,nTracts):\n",
    "    if t%200 == 0:\n",
    "        print(\"working on tract\",t)\n",
    "    if isSkippedTract[t] == 0:\n",
    "        uncomment = \"if-redone\"\n",
    "        tractMAP = tractMAP.union(tractGeom[t])  #uncomment to build map  ********\n",
    "x,y = tractMAP.exterior.xy\n",
    "plt.plot(x,y)\n",
    "pt1 = Point(-82.1,35.9)\n",
    "pt2 = Point(-81.5,35.9)\n",
    "pt3 = Point(-81.5,36.8)\n",
    "pt4 = Point(-83.0,36.8)\n",
    "clipPoly = Polygon([pt1,pt2,pt3,pt4])  #LEFTOVER FROM INDIANA. plan to clip off SW corner near Evansville\n",
    "xc,yc = clipPoly.exterior.xy\n",
    "#plt.plot(xc,yc)\n",
    "\n",
    "plt.show()\n",
    "            "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "f33de347-5473-4b11-b3ae-86691b33098d",
   "metadata": {},
   "outputs": [],
   "source": [
    "#find all tracts and precincts centered in this clipPoly, flag for cutting\n",
    "# NOT USED FOR CO -- SQUARE STATE.  COPY from another state\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "id": "c8979f27-45dd-4894-b876-32480df4a01e",
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "looking for tracts with zero area\n"
     ]
    }
   ],
   "source": [
    "# For potential later issues, identify and visualize zero-Area tracts.  See Ohio code for more code\n",
    "print(\"looking for tracts with zero area\")\n",
    "for m in range(nTracts):\n",
    "    if(tractArea[m] == 0):       \n",
    "        x = tractGeom[m].centroid.x\n",
    "        y = tractGeom[m].centroid.y\n",
    "        print( m,tractPop[m],\"(\",x,\",\",y,\")\" )\n",
    "        x2,y2 = tractGeom[m].exterior.xy\n",
    "        plt.plot(x2,y2,c=\"purple\")\n",
    "        #print(tractGeom[m])\n",
    "        plt.scatter(x, y)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "id": "9a0990e7-c2d6-4276-8074-b9bfbe0e6e83",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "working on tract 50\n",
      "working on tract 100\n",
      "working on tract 150\n",
      "working on tract 200\n",
      "working on tract 250\n",
      "working on tract 300\n",
      "working on tract 350\n",
      "working on tract 400\n",
      "working on tract 450\n",
      "working on tract 500\n",
      "working on tract 550\n",
      "working on tract 600\n",
      "working on tract 650\n",
      "working on tract 700\n",
      "working on tract 750\n",
      "working on tract 800\n",
      "working on tract 850\n",
      "working on tract 900\n",
      "working on tract 950\n",
      "working on tract 1000\n",
      "working on tract 1050\n",
      "working on tract 1100\n",
      "working on tract 1150\n",
      "working on tract 1200\n",
      "working on tract 1250\n",
      "working on tract 1300\n",
      "working on tract 1350\n",
      "working on tract 1400\n",
      "working on tract 1450\n",
      "working on tract 1500\n",
      "working on tract 1550\n",
      "working on tract 1600\n",
      "working on tract 1650\n",
      "working on tract 1700\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#rebuild tractMAP, excluding skipped / sliced tracts.  \n",
    "counter = -1 #Watchout - low-number tracts may have been skipped\n",
    "found = \"no\"\n",
    "while found == \"no\":\n",
    "    counter +=1\n",
    "    if isSkippedTract[counter]==0:\n",
    "        starter = counter\n",
    "        found = \"yes\"\n",
    "\n",
    "tractMAP = tractGeom[starter]\n",
    "for t in range(starter+1,nTracts):\n",
    "    if t%50 == 0:\n",
    "        print(\"working on tract\",t)\n",
    "    if isSkippedTract[t] == 0:\n",
    "        tractMAP = tractMAP.union(tractGeom[t])\n",
    "\n",
    "if type(tractMAP) != type(tractGeom[1]):\n",
    "    for geom in tractMAP.geoms:\n",
    "        x,y = geom.exterior.xy\n",
    "        plt.plot(x,y)\n",
    "else:\n",
    "    x,y = tractMAP.exterior.xy\n",
    "    plt.plot(x,y)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "4502cc9a-bf35-4f33-aa4c-4552e08980ed",
   "metadata": {},
   "outputs": [],
   "source": [
    "#for TN, let's convex_hull due to irregular river boundaries\n",
    "#tractMAP2 = tractMAP.convex_hull\n",
    "#x2,y2 = tractMAP2.exterior.xy\n",
    "#plt.plot(x2,y2)\n",
    "#plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "id": "650cf37d-e11a-4ed3-861b-3f3edc411422",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#What is our distribution of precinct's Trump votes by precinct Biden votes?\n",
    "fig, ax = plt.subplots()\n",
    "ax.set(xlabel=\"Biden votes in this precinct\", ylabel=\"Trump precinct votes\")\n",
    "plt.plot(vtdBiden, vtdTrump, marker='.',linestyle=\"none\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "id": "d40408f3-31eb-4b8a-ad91-4e2eb5f422df",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0 0.6808510638297872 188\n",
      "100 0.40213523131672596 843\n",
      "200 0.2985884907709012 921\n",
      "300 0.26501766784452296 566\n",
      "400 0.38179148311306904 681\n",
      "500 0.3654580152671756 1048\n",
      "600 0.4023715415019763 1265\n",
      "700 0.13027295285359802 806\n",
      "800 0.17891373801916932 313\n",
      "900 0.16041397153945666 1546\n",
      "1000 0.14553014553014554 962\n",
      "1100 0.09603960396039604 1010\n",
      "1200 0.13780918727915195 1415\n",
      "1300 0.5574057843996494 1141\n",
      "1400 0.1650485436893204 618\n",
      "1500 0.26890034364261167 1164\n",
      "1600 0.3650485436893204 515\n",
      "1700 0.5159362549800797 502\n",
      "1800 0.7881269191402251 977\n",
      "1900 0.365034965034965 1430\n",
      "2000 0.29210526315789476 760\n",
      "2100 0.5361271676300579 692\n",
      "2200 0.6875 1296\n",
      "2300 0.7907801418439716 282\n",
      "2400 0.49464668094218417 467\n",
      "2500 0.20750551876379691 1812\n",
      "2600 0.5417910447761194 1340\n",
      "2700 0.3630573248407643 628\n",
      "2800 0.38781804163454126 1297\n",
      "2900 0.47146207974980453 1279\n",
      "3000 0.46306641837368095 1611\n",
      "3100 0.41381536475145253 1549\n",
      "3200 0.1712962962962963 648\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYQAAAD5CAYAAAAndkJ4AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8/fFQqAAAACXBIWXMAAAsTAAALEwEAmpwYAAAsO0lEQVR4nO3de5xcdX3/8ddnZhOICERDEhMyYWm5KIJJZBsdKboE5BIRaHmo+LBsVOxaBCv111LzsFYU+ws/ir9HqKC4Py5mtVZRCmK4BBpZCXYqJCbhEgKmccmEQAjRICmym535/P44Zzab3Znd2bmemX0/88hjrufMd2fPns/53j5fc3dERERi9S6AiIhEgwKCiIgACggiIhJSQBAREUABQUREQgoIIiICQEuxbzSzOLAWeN7dzzWzDwFXAW8DFrr72gLbnQ1cD8SBm939mrE+64gjjvDW1tZiiyYiMuGtW7fuZXefXs4+ig4IwOeAp4HDwsdPAn8OfLvQBmEQuRF4P7AdeMzM7nb3TaN9UGtrK2vX5o0vIiKSh5k9V+4+imoyMrM5wAeAm3PPufvT7v7MGJsuBLa4+1Z37wd+AJxfamFFRKR6iu1DWA5cCWTHuf8jgfSQx9vD50REJGLGDAhmdi7wkruvK2H/lue5vLkyzKzTzNaa2dpdu3aV8FEiIlKOYmoIpwDnmVkvQZPPIjP7XpH73w4khjyeA+zI90Z373L3Nndvmz69rH4REREpwZgBwd2Xuvscd28FLgJ+5u5/UeT+HwOONbOjzWxyuP3dJZdWRESqpuR5CGb2Z2a2HUgC95jZqvD52WZ2L4C7DwCXA6sIRijd7u5PlV9sERGpNIti+uu2tjbXsFNpSKkU9PRAezskk/UujUwgZrbO3dvK2cd45iGIyGhSKTj9dOjvh8mTYfVqBQUZKcIXDQoIIpXS0xMEg0wmuO3pidwfvNRZxC8alMtIpFLa24M/8ng8uG1vr3eJJGryXTREiGoIURfh6qUMk0wGV3z6fUkhuYuGXA0hYhcNCghRFvHqpeSRTOp3JIVF/KJBASHK1CYt0nwifNGgPoQoU5u0iNSQaghRFvHqpYg0FwWEqItw9VIqJ51K09vTS2t7K4lkYuwNRKpAAUGkztKpNN2nd5PpzxCfHKdjdYeCgtSF+hBE6qy3p5dMfwbPOJn+DL09vfUukkxQCggiddba3kp8chyLG/HJcVrbW+tdJJmg1GQkUmeJZIKO1R3qQ6g0TeocNwUEkQhIJBMKBJXU1QWXXx7M4TnoIE3qLJKajETqKJWCZcuC22jsqAmkUnDZZbBvH2Sz0NcXuZxBUaUagkidVCwziVKcHKinJwgEOfG4JnUWSTUEkTrp7obXXw9aNfr6gsclXeRHPINmzbW3B81EsRi0tMANN9QuQDZ4Ta3oGoKZxYG1wPPufq6ZvRn4IdAK9AIfdvff5dmuF3gVyAAD5a7oI9IMUim45RbILViYzQbN3lBCk3fEM2jWXL1m+DdBTW08NYTPEayLnPMFYLW7HwusDh8Xcpq7z1cwqKAGvxKZ6Hp6YGDgwOey2RKbvHMnwKuvbsiTUFUkk7B0aW2/iyaoqRVVQzCzOcAHgH8CPh8+fT7QHt5fAfQAf1/Z4kleTXAlMmiCDg1sbw9aNDKZka9lszBt2jh3qBQn9dcENbViawjLgSuBIT01zHT3FwDC2xkFtnXgATNbZ2adpRZUhmiCKxFgf2D70peC2wlU20km4Wv/67cczh7ewQbmkB58bSY72XnLSlZeupJ0Kj3KXiRSmqCmNmYNwczOBV5y93Vm1l7CZ5zi7jvMbAbwoJltdveH83xOJ9AJMHfu3BI+ZgJpgisRYEKv95BOpRlYvoK/JosBGeKsoAOAj7OC7KMZ1j0K629Zz4JLFjCvY57mKTSCBq+pFdNkdApwnpktBg4GDjOz7wE7zWyWu79gZrOAl/Jt7O47wtuXzOxOYCEwIiC4exfQBdDW1uYl/TQTRYTSYpfV4tMsgW0ccllNX9n2Cpl9GeKDr2ToeG8vUw6GzIMZcJhDmtZ9vfTe9BzdKzbuT3o3QZvZpPrGDAjuvhRYChDWEP7W3f/CzP4ZWAJcE97+ZPi2ZnYIEHP3V8P7ZwJfrVjpJ7IIXImU3ZURocBWCWOlsB6a1TQWjxFriZHdF7TCTjooxqeuaQVgRU+cWf29dLCCOBkyxPlu38fp7eklwfYRX3qaOUp7IRVRzsS0a4DbzewSYBvwIQAzmw3c7O6LgZnAnWaW+6zvu/v95RVZoqIiLT4RCGyVUEwK66FZTbNkeedfvnPwtaFNQkt6lrD3in8g/miWGI6T4ejYc0HSu57vBcOQwuFIe7rvonvFYfVNna0aS9MYV0Bw9x6C0US4+27g9Dzv2QEsDu9vBeaVW0iJpgnY4lNQvhTWw0/MuaymuZN3Lgis61pHz1U9nHDhCZzceXKw3fK/gtN/hPf1Q7yFE274DDOTCXhiGunsbHpppTXbyx9ezDLQNwBZGHh9gJ6remi/qn3/Z1f7ZN1MI95EqSukdE3W4lOW4Sf7fCms82U1Xde1jpWfXgnA1ge2AnBy58mDX6719BBvb2dm+OWm1++imyVkiBMnw3s2PA/ZNwYf4LD1wa1sW7MtqCnkaV6q+C+p2gMDVPuoKQUEKUuTtPiUrdgU1sOzmm66Y9MBr2+6Y1MQECDvl9tLKxmexYmRwdnQO/XAD3D211B4pPqjuKpZTax17aPewafen48CgkjFlJLC+oQLTxisGeQej3ZiaO14L/HbtpLpywDG75kavGAEM35iDKmhtFS/Ta+a1cRaDkuud9NXvT8/pIAgUke52sCmOzYFfQgn9Y96YkgkE3Q89HE2dm9kw60byGayxFpizP/EfGYtmMVru18bUkNJ1KZNr1rVxFp2UtV7Tky9Pz+kgCAFjTWMUsowpBZwcmdyfzPRsmVjnhhyNZF5HfPG/v00cpteLTup6j1Cot6fH1JAkLyKGUYpJRqteWAcJ4YE24N+AlqAJv3d1Cqg1XuERL0/P6SAIHkVM4xSSjRa80CxJ4aItDk3lXrXpur9+SggSAHFDKOUseXtHx6rFlDMiSEibc7SXBQQJK9ih1FKYQUv4ivRPBCRNmdpLgoIUlApwyhlv9Eu4lMk6d6WhG5Y8ATs3j3O2FBqUInAWHeJLgUEkSopdBHf1QWf+cyBi+PEYiUsnTneNmf1O8gYxrOEpoiMQ771UlIpuOyykSullbR05ng1y8JKUjWqIYhU0fCL+J6e4OSfT0lLZ46H+h1kDAoIIjXU3h40DfX1gRkcfzw8/TS4B81Gu3dX8cMjMtZdoksBQepjgnZuDj8nw4HN+lW/aI/AWHeJLgUEqb0J3LnZ1QV33AEXXrj/Ry71ol2pRaTSFBCk9ibIpKrhlaCuLvj0p4PXHngguO3sLO2iXalFpBo0ykhqL9e5GY83bedmVxeceip88Ytw2mlBcLjjjgPfM/zxeORLLSJSrqIDgpnFzWy9ma0MH7/ZzB40s1+Ht28qsN3ZZvaMmW0xsy9UquDSwPKNx2wiqdT+eQbuQQfytdcGzURDDX88HrnUIhY3pRaRihlPk9HngKeBw8LHXwBWu/s14Yn+C8DfD93AzOLAjcD7ge3AY2Z2t7sfuEyUTDxN3LnZ0zNynsFdd8Fxx8EFF8COHXDJJUFzUc54+wOUWkSqoaiAYGZzgA8A/wR8Pnz6fKA9vL8C6GFYQAAWAlvcfWu4nx+E2ykgSEMqZnBUe3swpNT9wOevvTYYWtrSAuvXB/tKJsfoDxjlAydE+mupqWJrCMuBK4FDhzw3091fAHD3F8xsRp7tjgTSQx5vB95VQjlF6q7YwVHJJBx1FPT2jnwtmw22v+kmuPXW4Fw/UCjVeIEPTKfS7O5eyTtu+zyxgX0TbqSWVM+YfQhmdi7wkruvK2H/luc5z/McZtZpZmvNbO2uXbtK+CiR6hpP5of588feX38/dHfn7w9Ip9L85qrv4K/3QSaD9wUfmE6lWdG+gt033RF0TmQy8PrrwY5EylRMp/IpwHlm1gv8AFhkZt8DdprZLIDw9qU8227nwLrsHGBHvg9x9y53b3P3tunTp4/jRxCpjfEMjrryyqB5qBiJZIK3L/8UG47/EL2t7+OeG5/jO+/7Dj97IMOAx8hgDGRj7Jz2NjZ2bwxqEbSSIU4WgrapW28NahQiZRjzkHX3pe4+x91bgYuAn7n7XwB3A0vCty0BfpJn88eAY83saDObHG5/d0VKLlJjow2OSqWC5ZBz5+RkEr71raC/wCy4vfLKIJDkTJoECxbApZfChy+bzl2bjuc7T7+L//rXLbywbxrbSdDNEnpYRLd18Ozu/YmOcq89w1uDJzIZJauTspUzMe0a4HYzuwTYBnwIwMxmAze7+2J3HzCzy4FVQBy41d2fKrfQIvWSb3BUob6Fzk446aQD+4QvuGB/686CBfDZzwbbBa2rRgZnGwnmhl1v20mQJgHEmD2tlXntsOG2DWT6Mjwfm8trsSfBm3c+h9TWuAKCu/cQjCbC3XcDp+d5zw5g8ZDH9wL3llNIkSgba4nkoQFk6ONLL80Fg5ygEegotpHFBjvbssS418/h2isSfH/5To455xie/emzzMmm+b0fys4PXsLMKz+uTmUpm1JXiJRprKzSxc4xmMPzvJ8HeZ2DuJcP8GfcRRbjIRaRZi7xPuebl23ilMwzzPE0F7OCeCaD37OG1DmXT8RcgVJhCggiZRqawXT+tDQDPb2kCU7+o80xOG9Bms3xXl7NTOEQ/ocTeIoZvMxtfJxXmMoKlnAMW3gxPoc40BLLclTmN+DQSi9xMsRw/nOgjTMufyv9WY1AlfIoIEjkNUJWz2QS5jDy5D8059DA6wNs7N4IwMbujWy4dQPtmcxg05Bj3Ml5YZ9B0GS0NX4c3/xmsE7C26a9zFNXvECm39hmf4T7Gtwz/Dy2iP5MC5lsU+cKlBpQQJBIa6SsnvkSzrW2txKLx8hkMuCw/pb1Qadwf+aAGTkGbGMOT3ESQ5/94AeHpriYyckn7U9XEecT0NND+7RzmXyFaSE0KZsCgkRavpNsVANCboJZLnjlajTzPzmfdd9eBw7ZgXD9TA/igRMEAwd6aSVLjNx8zng8GKo6VJCsIkFLeL+HJO0naSE0qQwFBIm0fCfZqCqUcG5gwZ/wi/ghHJX9DUe17MDdGdiXJUuc9cznRWbydjbxPLPJBQMzOOUUeOKJA1dXO+20oFmopSWY+DYwsL/fYOnSuvzY0kTMh2fgioC2tjZfu3ZtvYshEdEIfQiFDM5R6HNa4ll+cMPLtKx/jJ99ewv/7uezjaOI4byZl9nFzLz7MIODD4azzgqypg593j2oSVx99bCAMEGXKJ3IzGydu7eVsw/VECTyEslEwwWCnME5Clkj6zFuuyXDx9pncXjLRs4YeIj/9qPZwLyCwQCCk/4f/jByInIuNcaIfoMJvESplEcBQaquka/wy9XeHjTvZDKOO9zz6Aze9OgDPGlnc4i9xmY/jj28uah97dlz4OOLLoK3vz1PJWCCLFEqlaclNKWqcqOEHvrSQ3Sf3k06lR57oyaSTMInPjHYM0AWYxsJpvhr/CbbyhReo0AC4DGtXx80E80hzZpla/Z/txNgiVKpDtUQpKoaaZRQKQrVfoY24Xd0wHduc/r6ssTJMpc0T3IiHXSzg1l000GGOPmzxQ81NHAYmzbBDX+f5pVvDB+Wm9SwIymJAoJUVSONEhqvQnMk8jXh/+yhGHd176GVXg47bAF23QZasgPESqgdGM4cnuMo0jzwz69wsmUgOyzg1nOJUnVoNywFBKmqSq39G8VzTKHaT74m/KVLIZmcCsxnzbI1tHovAL8ZNvcgMFqQCGYt9HMQaY5klu+AWAyLZ6MRcNWh3dAUEKTqyh0lFNVzTL7aTzqVZuq23UxqeQcQy9uE37enb/Ccn8tJNBCmv85NV3sTv2MO23mSE3Es/JfBw26/mezkt7yZzRzPMVNeYt4ZM3jPle+pf3OcOrQbmgKCRF5UzzHDaz/AYBNSR3wDU//yAi7omHpAWdOpND/8+jZivIVZvMhctvMp/h/bmcMGFrCdBIYzj41hc5IBMcyynH3qH+j9r538Sf8jYYrsGDGy2F5n812/Bah/UBgr9atEmkYZSeRFedBMIpng1KWnkkgmDmhCOjKzjXPnPjEicK3s3s1tmQ7u5RwGaMGBmezinaxnCd0k2IaRZTbP8w4eZy7PYWSJxYzzP3Yof7341xzFNmI4weKaPtjYtPmuzfUfyTXasnISeaohSOQ1yqCZYjrQf/HiH5MhznbmsoKLOY+fMoOXwwajAc7hPg7nFabwOobzcbr5Be+hL3sw1362leu+8U523rOOzL4sjhEje8D+IzGSq54d2lKWMQOCmR0MPAwcFL7/x+7+ZTObB9wEvBHoBT7m7r/Ps30v8CqQAQbKnVotE1MjnGOK6UA/9C2HkutA2E6CZzmOGbw82H0wmxcHu5RzPQqn8J+4G5n+OE+t7+ATP18y+BkvPfESv7rlV7y4/kU869HoWJaGNWYuIzMz4BB332tmk4BHgM8B3wD+1t1/bmafBI529y/l2b4XaHP3l4stlHIZSbNKpfYnqJvU4iy/ZCMLF2TYct8WNt+1ebDXYKjccxmM4//qND72rVNH7HcizwaXQE1yGXkQMfaGDyeF/x04nqDmAPAgsAoYERBEZL9kEh56KNf8ZSST8wF4bfdrbP7JZswZERRy9ycdFOe9Ha3AyADQyPmeJDqK6kMwsziwDjgGuNHdf2lmTwLnAT8BPgQUOhodeMDMHPi2u3eVX2yRxpVr/kqn0qxZFpzUW9tbaTm4hYHXB7BhlfZYS4wFn1rAvI55eZfl/NTytzNz99P7O1iiOGlDGkJRAcHdM8B8M5sK3GlmJwKfBP7FzP4RuBvoL7D5Ke6+w8xmAA+a2WZ3f3j4m8ysE+gEmDt37vh/Emk6zXxeyzfLuWN1x+DSmtlMllg8xvxPzh8MBKRSsOx79G6bOziaaVZfL0dcfjVkw4URli+HK66I3qQNGV1EDvZxjTJy9z1m1gOc7e7XAWcCmNlxwAcKbLMjvH3JzO4EFrK/qWno+7qALgj6EMZTrkiq1C+4igdKRI7BvKI6Ga1S8s1yzg1fndcxb2R/wJAvpDXeSrxlCRngaHuOWGYAsuEkjTvuiOakDSksQgd7MaOMpgP7wmAwBTgD+D9mNiM8yceAfyAYcTR820OAmLu/Gt4/E/hqZX+ECKrUL7iKB0qEjsG8ojoZbYQSo+poQ1Tz9gcM+UIS9NLxlzF6576X46a9A7vikf2/yAsvhDVrNDGskUToYC+mhjALWBH2I8SA2919pZl9zswuC9/z78BtAGY2G7jZ3RcDMwmamHKf9X13v7/SP0TkVOoXXMUDJULHYF4NMeG1jKhabI6nwc7jafNJDPlCEh2LgqymACflmaRxxx1BcIjSL1Xyi9DBXswoo8eBBXmevx64Ps/zO4DF4f2twLzyi9lgKvULruKBEqFjMK+GmIxWZlQda2TQiH6G5XeQ2L1h5BcydJJGKrW/D2HNGjjppIh+eTIoQge7ZipXQ6V+wVU8UCJ0DBYU+cloVY6qI/oZdr+RRHs7dHcH/zs6Rn5BUa/6SX4ROdgVEKqlUr/gKh4oETkGG1eVo+qIfoZpe6H9guBED3DbbcGkhqGfG/Wqn0SaAoJIOaoYVUf0M3T/7/3BAPLXABqh6ieRpYAgEmGD/QypVFAjGKpQDUBVPymR0l+LNIKeHhgY2P944cKRzUUiZVJAEGkEQxeFmDIlmJGsYCAVpiYjibQoz6auKfUNSA0oIEhkRX02dc2pb0CqTE1GUrJUCpYtC26rId+QehGpHtUQpCS1uHovZ0i9FowRGT8FBClJLSbEltpsni+1tIKCyNgUEKQktZoQW0qzeb7U0goITUQjDapGAUFKEuVBL6OllpYGp5EGVaWAoKuNkkV10EuxqaWlASl5X1VNnIAw/MSfSgUZI2+7LZgBqquNptKUi87r4kXJ+6psYgSE4dXM3Lqzr7+Ou2OA9/VjutqQqModw319wWzlG26Azs56l6r2otxW2QQmRkAYXs0M153d6UfwZn5HjAzZrPHbaW9jZr3LKpJPT08QDLLZ4P9ll03cxW+i2lbZBMacmGZmB5vZo2a20cyeMrOvhM/PM7OUmT1hZj81s8MKbH+2mT1jZlvM7AuV/gGKMjQPTG7d2cmTedbeyne5mB4W8V0u5tn1/1OX4omMqb09OH5zslnN1JOKK2amch+wyN3nAfOBs83s3cDNwBfc/STgTuDvhm8YrsN8I3AOcALwUTM7oUJlL16umnn11cFtZyesXk3rn0znBWbzC97DC8ymld6aF02kKMlk0EzU0gKxGBx0kNrPpeLM3Yt/s9kbgEeAS4EHgcPd3c0sAaxy9xOGvT8JXOXuZ4WPlwK4+7LRPqetrc3Xrl07rh+kJKkU6faL6d13JK2TnifR811VRSXa1LEsBZjZOndvK2cfRfUhhFf664BjgBvd/Zdm9iRwHvAT4ENAviEdRwLpIY+3A+8qp8AVlUyS6PkuCf2BSaNQ+7lUUVEBwd0zwHwzmwrcaWYnAp8E/sXM/hG4G+jPs6nl212+zzCzTqATYO7cucUUa6RSrp5q9QemKzupkFyepjdMewOv7X7twLkWQ48z0DEn4zKuUUbuvsfMeoCz3f064EwAMzsO+ECeTbZzYM1hDrCjwL67gC4ImozGUy4g2jMYo1w2aRjpVJqN3RvZcNsGMvsykAUMYvEYi29czMkn9e8/zlpawD0YWadjTopUzCij6WHNADObApwBbDazGeFzMeAfgJvybP4YcKyZHW1mk4GLCGoTlRflXMlRLps0hHQqzYr2Fay7aR2ZvjAYADhkB7Lcc+k9PH/tvx54nO3bp2NOxqWYUUazgIfM7HGCE/yD7r6SYMTQs8Bmgqv+2wDMbLaZ3Qvg7gPA5cAq4Gngdnd/qvI/BiOHlkZpBEaUy1aEri4466zgVupjY/dGMv2Zgq971ln10z6yLZP2H2eTJjXsMSf1MWaTkbs/DizI8/z1wPV5nt8BLB7y+F7g3vKKWYQoz2CMctnG0NUFn/50cP+BB4LbiThBthFs9wSPf+L/Mn/unuA4e+KJYBLmhRc21DEn9TOuYae1UrNhpw2o1n3TZ521PxAAnHkmrFpV/c+VA6VTaVactiJoLiqgZUoLZy8/O+honraXxBUXqt9qAqnZsFOJhnr0TV944YEB4cILq/t5kn+1t0QywZKHlnBnx538bsvvRmxzxNuO4N1XvJv7r7g/SPsdczoy00lktykrqBRNAaGB1CPzb655KNfyoOai6hprtbeZJ87MGxCmHT+N13a/tn9hIIfe2B+TsOfVhyBFU0BoIPXK/NvZqUBQK4VWe8sFit6+WfTGTuXoGXt5+cUBJtPHm/kd8Xu3cOw5xx64MNDyv4Pd72+4fqum0mDzjxQQomzYwdTAfdNSpEKrvfX29NLbN4vvZC8mQxx70cmGgwSNLOfuu5f5619g3pJ5AMzrmBfWLM6p008ijTj/SAEhqgocTMpc0NwKrfbW2t5Kr+0jQxwnhuPkEgE4MTb6O/jVLd+FbJb45DjzOubV8acQoCFXdytmHoLUgyazTViJZIJTl556QN9BIpngrA9OJk4GGzIrbQ7b+FMe4SSewAeyBzQ1SZ014Pwj1RCiSksFyjAfufIonl35PbYOzGUKr7GHqbyPh4mTIUsMa4kN1hByTU1SRw3Yxqt5CFHWYB1SUqJx/J5z+Yxy1nX9CrIOMePkzndy+NzDD0x2JxOG5iE0O3UYNL9xdjwmkonBk306lWbjio2DHdD7O5JFSqOAIFJPZXQ8FuqAFimVAoJIPZXZVzS0xiBSLgUEkXpqwI5HaV4KCCL1pr4iiQjNQxBpRKkULFsW3IpUiGoIIo2mAVMiSGNQDSEqdMUnxdIsdqmSMWsIZnYw8DBwUPj+H7v7l81sPsE6ygcDA8Bn3P3RPNv3Aq8CGWCg3IkTTUlXfDKeSYiaxS5VUkyTUR+wyN33mtkk4BEzuw/4KvAVd7/PzBYD1wLtBfZxmru/XJESN6MGTIIlFTTeCwKNTJIqKWZNZQf2hg8nhf89/H9Y+PzhwI5qFHBC0BXfxFbKBYFGJkkVFNWpbGZxYB1wDHCju//SzK4AVpnZdQR9Ee8psLkDD5iZA992967yi91kdMU3semCQCJiXMntzGwqcCfwWaAT+Lm732FmHwY63f2MPNvMdvcdZjYDeBD4rLs/nOd9neE+mTt37snPPfdcKT+PSPQU0z+gRIZSpkoktxt3tlMz+zLwP8CXgKnu7mZmwCvuftgY214F7HX360Z7n7KdStPQgAGpkUoEhDGHnZrZ9LBmgJlNAc4ANhP0GbwvfNsi4Nd5tj3EzA7N3QfOBJ4sp8AiDUVDRKWBFNOHMAtYEfYjxIDb3X2lme0BrjezFuB1wuYeM5sN3Ozui4GZwJ1BBYIW4Pvufn/lfwyRiFL/gDQQLZAjUm35+gfUZyAVpgVyRBrB8CGi6leQiFLqCpFaU7+CRJQCgkit5foV4nH1K0ikNHeTkdppJYoqMRExlSLd/TN6X5xC61v+QKJj0QH7qcuhr7+3hte8AUHttBJl5aSeSKVIt19Md/9FZOgnToaOWy8m0fNdSCa5q2snH/nMEezLxpg82XjooRoc+vp7awrN22SkdlppVj099O47kgxxnBgZYvTuOxJ6ekin0txw6Sb2ZQx3o6/P6e6uTZn099b4mjcgqJ1WmlV7O62TnidOBiNDnCytk54nPW0+P7rkfk7MbmQuz2FkiJGtWZn099b4mnsegto0pVkN60NgwTtZ8dl1DPRnAHCMDczj0di7+fdHZtbm8NffW11pHsJYlCJYmlUySSKZJBE+XLNsDZl9GWzwDU6GOB1/W6NgEJZJf2+NrXmbjEQmkNb2VojFBxcqyRDnceYxdWp9yyWNpblrCCITRCKZYOE3l/CtSzeSzcJG5rHroISa8mVcFBBEmsQ5nQmmnpSguxsSQEdHk7TgqG+iZhQQRJpI0zXja35DTakPQUSiS/MbakoBQUSiqwHnN6RTadYsW0M6la53UcZNTUYiEl2VyPtUQ+lUmu7Tu8n0Z4hPjtOxuoNEMjH2hhGhgCAi0dZAHSO9Pb1k+jN4xsn0Z+jt6W2ogKAmIxGRCmltbyU+OY7FjfjkeDA/pIGMWUMws4OBh4GDwvf/2N2/bGbzgZuAg4EB4DPu/mie7c8GrgfiBGstX1O54ouIREcimaBjdQe9Pb20trc2VO0Aimsy6gMWufteM5sEPGJm9wFfBb7i7veZ2WLgWqB96IZmFgduBN4PbAceM7O73X1TJX8IEZGoSCQTDRcIcsZsMvLA3vDhpPB/bob8YeHzhwM78my+ENji7lvdvR/4AXB+2aUWkepIpWDZsuBWJpyiOpXDK/11wDHAje7+SzO7AlhlZtcRBJb35Nn0SGDo2KvtwLsKfEYn0Akwd+7cYssvIpWiSWATXlGdyu6ecff5wBxgoZmdCFwK/I27J4C/AW7Js6nleS5vvm1373L3Nndvmz59elGFF5EKivokMNVeqm5cw07dfY+Z9QBnA0uAz4Uv/Qi4Oc8m24GhjWlzyN+0JCL1lpsElqshRGkSmGovNTFmDcHMppvZ1PD+FOAMYDPBif194dsWAb/Os/ljwLFmdrSZTQYuAu6uQLlFpNJyk8Cuvjp6J9yo116aRDE1hFnAirAfIQbc7u4rzWwPcL2ZtQCvE7b/m9lsguGli919wMwuB1YRDDu91d2fqsYPIiIVENVJYFGuvTSR5l5CU0Sah9Jgj0pLaIrIxBHV2ksTUeoKEWlOGpU0bqohSFNLp9INm0ZAyqBRSSVRQJCm1eipiKUM+UYlKSCMSU1G0rTypSKWCaIBF9aJAtUQpGnlUhHnagiNlopYytBgC+tEhYadSlNTH4JMFBp2KjKGRk5FLFJrzdeHoKFmIiIlaa4agoaaiYiUrLlqCEqAJSJSsuYKCBpqJiJSsuZqMtJQs6aiEUIitdVcAQGUACuKSshSqVnGIrXXfAFBoqXEjv58s4wVEESqq7n6ECR6Suzoz80ytrhplrFIjaiGINVV4kpXiWSCjtUd6kMQqaExA4KZHQw8DBwUvv/H7v5lM/shcHz4tqnAHnefn2f7XuBVIAMMlDu1WhpMGR39mmUsUlvF1BD6gEXuvtfMJgGPmNl97v6R3BvM7OvAK6Ps4zR3f7nMskqjUke/SEMYMyB4kP1ub/hwUvh/MCOemRnwYWBRNQooIiK1UVSnspnFzWwD8BLwoLv/csjLpwI73f3XBTZ34AEzW2dmnWWVVkREqqaogODumbB/YA6w0MxOHPLyR4F/G2XzU9z9ncA5wGVm9t58bzKzTjNba2Zrd+3aVVzpRaT6lDBywhjXKCN332NmPcDZwJNm1gL8OXDyKNvsCG9fMrM7gYUEndTD39cFdEGwHsJ4yiUiVaKEkRPKmDUEM5tuZlPD+1OAM4DN4ctnAJvdfXuBbQ8xs0Nz94EzgScrUG6RppJOpVmzbA3pVLreRTmQEkZOKMXUEGYBK8wsThBAbnf3leFrFzGsucjMZgM3u/tiYCZwZ9DvTAvwfXe/v1KFF2kGkU7TUeI8EmlMxYwyehxYUOC1j+d5bgewOLy/FZhXXhFFmluk03QoYeSEopnKInWWS9ORqyFELk2H5pFMGAoIMoLSTteW0nRIVCggDFVCmuZmE+n27CamNB0SBQoIORpeB0S8PVtEqkrpr3NqPLwuqnN9lHZaZByi+odcItUQcmo4vC7KlRG1Z4sUKcp/yCVSQMip4fC6fJWRKB1Has8WKULU/5BLoIAwVI2G12muT51p8IBUQhP+ISsg1MHwysgc0qxZpiaammjCar7USRNO2lNAqJNcZUTDPGusCav5UkdNNmlPo4zqLN8wT6miXDU/Hm+aar5IpaiGUGeRT1vQbJqwmi9SKRaskBktbW1tvnbt2noXo2aUKkJEymVm69y9rZx9qIZQA2MNatEwTxGJAgWEKtOgFhFpFOpUrjItOCUijUIBoco0qEVEGsWYTUZmdjDwMHBQ+P4fu/uXzeyHwPHh26YCe9x9fp7tzwauB+IES2teU5miNwYNahGRRlFMH0IfsMjd95rZJOARM7vP3T+Se4OZfR14ZfiG4TrMNwLvB7YDj5nZ3e6+qTLFbwxNNndFRJrUmE1GHtgbPpwU/h8cq2pmBnwY+Lc8my8Etrj7VnfvB34AnF92qUVEpOKK6kMws7iZbQBeAh50918OeflUYKe7/zrPpkcC6SGPt4fPiYhIxBQVENw9E/YPzAEWmtmJQ17+KPlrBwCWb3d532jWaWZrzWztrl27iimWiIhU0LhGGbn7HqAHOBvAzFqAPwd+WGCT7cDQGVdzgB0F9t3l7m3u3jZ9+vTxFEtERCpgzIBgZtPNbGp4fwpwBrA5fPkMYLO7by+w+WPAsWZ2tJlNBi4C7i671CIiUnHF1BBmAQ+Z2eMEJ/gH3X1l+NpFDGsuMrPZZnYvgLsPAJcDq4Cngdvd/alKFV5ERConksntzGwX8FyBl48AXq5hcSpF5a6tRi03NG7ZVe7aGl7uo9y9rPb2SAaE0ZjZ2nIz+tWDyl1bjVpuaNyyq9y1VY1yK3WFiIgACggiIhJqxIDQVe8ClEjlrq1GLTc0btlV7tqqeLkbrg9BRESqoxFrCCIiUgWRDQhm9iEze8rMsmbWNuy1pWa2xcyeMbOzhjz/ETN7PNzu2tqXuuRyf9TMngjLfr+ZHVH7ko+/7GZ2qJltGPL/ZTNbHvVyh89PNrMuM3vWzDab2YUNUu6e8Lncdz6jEco95PW7zezJ2pV2xOeX8p3fb2Ybw+1uCrM4R7rcZvYGM7snPLafMrPilh1w90j+B95GsN5CD9A25PkTgI0E6zMcDfw3wVoL04BtwPTwfSuA0xug3C0ESQOPCN93LXBVI3znebZfB7y3EcoNfAX4Wng/lvv+G6DcB7y3kY4TgjQ33weebKSyA4eFtwbcAVwU9XIDbwBOC98zGVgDnDPW50S2huDuT7v7M3leOh/4gbv3uftvgC0Eabb/CHjW3XOZ8f4DqPlVXwnltvD/IWZmwGEUyPdUbSWUfZCZHQvMIDjwaqrEcn8SWBZun3X3mk9MKuf7rqdSym1mbwQ+D3ytdiUdqZSyu/vvw/e0EJxca97xOt5yu/tr7v5QuG0/8CuCXHKjimxAGEWhlNpbgLeaWWuYdO8CDkysV295y+3u+4BLgScIAsEJwC21L96oiklj/lHghx5ekkRE3nLncnMBV5vZr8zsR2Y2s+alK2ys7/u2sLnoS+FFRFSMVu6rga8Dr9W6UEUa9Ts3s1UENflXgR/XtmijGvNvMzzePwisHmtnxayYVjVm9h/AW/K89EV3/0mhzfI85+7+OzO7lCDzahb4T4JaQ8VVstwWrEJ3KbAA2Ap8A1hKla6kKln2YY8vAi4up2yjqXC5Wwiuln7h7p83s88D11GF8lfh+/6Yuz9vZocSNF9cDHSXX9JhBajsMT4fOMbd/8bMWitUxIKqcYy7+1kWLCf8r8Ai4MGyCzq8AFUod3hx/G/Av7j71rHKUNeA4O5nlLBZwZTa7v5T4KcQrK8AZMotYz4VLvf8cJ//DWBmtwNfKLOIBVX6Owcws3lAi7uvK7N4BVW43LsJrlTvDJ//EXBJWQUsoArH+PPh7atm9n2CZo2KB4QKlzsJnGxmvQTnnBlm1uPu7eWWM59qHOPhfl83s7sJmmkqHhCqVO4u4NfuvryYnTVik9HdwEVmdpCZHQ0cCzwKkBtxYWZvAj4D3Fy3Uo5UqNzPAyeYWS4p1fsJMsNGScHvPDTaIkn1lLfcYbPWT4H28H2nA1Fa5ztvuc2sxcIRaGHN8lygbiN28ij0fX/L3We7eyvwpwR9fe11LGc+hb7zN5rZLBi82l7M/vT/UTDa+fBrwOHAFUXvrda95ePoVf8zgujXB+wEVg157YsEvenPMKTnnOCktCn8X/ORAGWU+68IgsDjBCeqaY1S9vC1rcBbG+xYOQp4OPzOVwNzo15u4BCCkVyPA08B15NntFfUyj1s21bqO8povN/5TIK0/7nv/BsEteGol3sOQdPR08CG8P+nxvoczVQWERGgMZuMRESkChQQREQEUEAQEZGQAoKIiAAKCCIiElJAEBERQAFBRERCCggiIgLA/weCmzlIfrfJSgAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#ALL TRIMS COMPLETE. let's convert the partisan data to the format we use for HD code\n",
    "# in this prototype, we only use 2020 presidential data, but this could be modified\n",
    "vtdGOP = [0.]*nPrecincts  #Each precinct's R/(R+D)\n",
    "vtdPop = [0.]*nPrecincts   #THIS IS VOTER POPULATION\n",
    "vtdArea = [0.]*nPrecincts\n",
    "vtdCPx = [0.]*nPrecincts   #these are centroid x and y of each precinct\n",
    "vtdCPy = [0.]*nPrecincts\n",
    "plotcolor = ['blue']*nPrecincts\n",
    "for p in range(nPrecincts):\n",
    "    vtdPop[p] = vtdTrump[p] + vtdBiden[p] \n",
    "    vtdGOP[p] = vtdTrump[p]/max((vtdTrump[p] + vtdBiden[p]), 0.01)  #avoid divide by zero\n",
    "    if (vtdGOP[p] > 0.40) :\n",
    "        plotcolor[p]='purple'\n",
    "        if (vtdGOP[p] > 0.60) :\n",
    "            plotcolor[p] = 'red'\n",
    "    vtdArea[p] = vtdGeom[p].area\n",
    "    vtdCPx[p] = vtdGeom[p].centroid.x  #not needed except for graphing\n",
    "    vtdCPy[p] = vtdGeom[p].centroid.y   #not needed  \"  \"  \"\n",
    "    if isSkippedPrecinct[p] == 0 and p%10 == 0: #memory drain if we print all\n",
    "        plt.scatter(vtdCPx[p], vtdCPy[p], marker='.',c=plotcolor[p])\n",
    "for p in range (nPrecincts):\n",
    "    if p%100 == 0:\n",
    "        print(p,vtdGOP[p],vtdPop[p])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "id": "a1e3f0d2-c21c-46d4-8227-e75dfd5e89b6",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "original and buffered map areas are 28.039755632626 28.039755632626\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "MAP = tractMAP  #committing to the trimmed map (for TN, using convex hull)\n",
    "#bufferDistance = 0.02  #not buffering for IN\n",
    "origMAP = tractMAP    # let's keep a copy of the original map prior to buffering\n",
    "#MAPbuffer = MAP.exterior.buffer(bufferDistance, single_sided=True)  #gives a little exterior buffer\n",
    "# MAP = origMAP.convex_hull  #alternate to buffer for weird state shapes\n",
    "bBox = MAP.bounds\n",
    "MAPMinX = bBox[0]  #these four are useful for slicing ops, and are basis for map grid (without buffer)\n",
    "MAPMinY = bBox[1]\n",
    "MAPMaxX = bBox[2]\n",
    "MAPMaxY = bBox[3]\n",
    "\n",
    "#MAP = MAP.union(MAPbuffer)  #not buffering for TN\n",
    "print(\"original and buffered map areas are\",origMAP.area,MAP.area)  #same if we didn't buffer\n",
    "x2, y2 = MAP.exterior.xy\n",
    "plt.plot(x2,y2,c=\"green\")\n",
    "x2, y2 = origMAP.exterior.xy\n",
    "plt.plot(x2,y2,c=\"blue\")\n",
    "plt.show()\n",
    "\n",
    "minTractPop = 10  #was zero to not exclude empty interiors"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "id": "8e271f55-e118-4575-bc99-c28c59f435b7",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2020 population, Trump+Biden voters, lean =  5773714 3168959 0.43061680507699845\n",
      "compare to Census 5773714 Leip has Trump + Biden = 3168959.0 0.43061680507699845\n"
     ]
    }
   ],
   "source": [
    "#let's confirm some population stats - these match 2020 census, USelectionatlas.org :-)\n",
    "censusPop = 5773714\n",
    "atlasTrump = 1364607.\n",
    "atlasBiden = 1804352.\n",
    "\n",
    "print(\"2020 population, Trump+Biden voters, lean = \",np.sum(tractPop),np.sum(vtdPop),stateGOP )\n",
    "print(\"compare to Census\",censusPop,\"Leip has Trump + Biden =\",atlasTrump+atlasBiden,\n",
    "      atlasTrump/(atlasTrump+atlasBiden) )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "id": "6c47f717-f208-4a4c-b825-a3181a83c6ee",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "state pop before, after slice operation are 6910839 6910839.0\n",
      "state Trumpers before, after slice opn are 1852463 1852463.0\n"
     ]
    }
   ],
   "source": [
    "#Check on integrity after slicing\n",
    "sumPop = 0.\n",
    "sumTrump = 0.\n",
    "for t in range(nTracts):\n",
    "    if isSkippedTract[t] == 0:\n",
    "        sumPop += tractPop[t]\n",
    "for p in range(nPrecincts):\n",
    "    if isSkippedPrecinct[p] == 0:\n",
    "        sumTrump += vtdTrump[p]\n",
    "print(\"state pop before, after slice operation are\",np.sum(tractPop),sumPop)\n",
    "print(\"state Trumpers before, after slice opn are\",np.sum(vtdTrump),sumTrump)\n",
    "for t in range(nTracts):\n",
    "    if isSkippedTract[t] ==1 and tractPop[t] > 0:  #should not occur\n",
    "        print(\"missed pop for tract, pop, (x,y)\",t,tractPop[t],tractGeom[t].centroid.x,\n",
    "              tractGeom[t].centroid.y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "id": "b5334311-b597-4568-88c7-eb3c9d4bdf09",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "map has a total of 40 grids for 8 districts\n",
      "starting grid no 0 at x = -108.62153637499999, y = 37.3935485 \n",
      "starting grid no 5 at x = -107.74420112499999, y = 37.3935485 \n",
      "starting grid no 10 at x = -106.866865875, y = 37.3935485 \n",
      "starting grid no 15 at x = -105.98953062499999, y = 37.3935485 \n",
      "starting grid no 20 at x = -105.11219537500001, y = 37.3935485 \n",
      "starting grid no 25 at x = -104.23486012500003, y = 37.3935485 \n",
      "starting grid no 30 at x = -103.357524875, y = 37.3935485 \n",
      "starting grid no 35 at x = -102.48018962500001, y = 37.3935485 \n",
      "done building grids. avgGridDensity, maxGridDensity,nPopulatedGrids = 205091.4619043338 4618019.901069342 40.0\n"
     ]
    }
   ],
   "source": [
    "# this section - ESTIMATE POP'N DENSITY at scale of 1/2 of district length\n",
    "# also, IDENTIFY WHICH TRACTS and VTD's INTERSECT EACH GRID to speed later intersection searches by grid \n",
    "# (above sections already pulled in Tract and Precinct geometry and demographic data, built an overall map)\n",
    "nDistricts = 8   #CO congressional\n",
    "avgDistrictPop = np.sum(tractPop) / float(nDistricts)\n",
    "#MAPMaxX = -80.   #In most state maps, we figure this out from the bounding box of the convex hull; see above.\n",
    "#MAPMaxY = 31.1   # ... but for Florida, we will do manually\n",
    "#MAPMinX = -87.0\n",
    "#MAPMinY = 25.5\n",
    "stateWidth = float(MAPMaxX - MAPMinX)\n",
    "stateHeight = float(MAPMaxY - MAPMinY)\n",
    "stateWHRatio = stateWidth / stateHeight\n",
    "G = 2  #adjustable parameter; G*G = number of grids that fit in an average district\n",
    "nGridsX = int( G*round((nDistricts*stateWHRatio)**0.5,0) )   #OK to have empty grids for a non-rectglr state\n",
    "nGridsY = int(round(nGridsX / stateWHRatio,0) )  #so grids are square even if state has high aspect ratio\n",
    "nGrids = int(nGridsX*nGridsY)\n",
    "print(\"map has a total of {0} grids for {1} districts\".format(nGrids,nDistricts) )\n",
    "nGridPrecincts = [0]*nGrids # will store how many precincts intersect with each grid square\n",
    "nGridTracts = [0]*nGrids    # same, but for tracts\n",
    "gridPrecinctNo = [[0]*nPrecincts for gridNo in range(nGrids) ] # initialize a list of VTDs that intersect with each grid square\n",
    "gridTractNo = [[0]*nTracts for gridNo in range(nGrids) ] # initialize a list of tracts that intersect with each grid square\n",
    "\n",
    "gridPop = [0.]*nGrids #will store approx total population for this grid square\n",
    "gridDensity = [0.]*nGrids\n",
    "gridGeom = [Polygon([(0,0),(0,1),(1,0)])]*nGrids  #initialize grid geometry\n",
    "gridWidth = stateWidth /nGridsX        #geo length of a grid's side length\n",
    "gridHeight = stateHeight /nGridsY    \n",
    "\n",
    "for nG in range (nGrids) : #  create polygon shape for each grid square, compute grid-square population density\n",
    "    x = int(nG/nGridsY)\n",
    "    y = int(nG % nGridsY)\n",
    "    point1 = Point(x*gridWidth+MAPMinX,y*gridHeight+MAPMinY)\n",
    "    point2 = Point((x+1)*gridWidth+MAPMinX, y*gridHeight+MAPMinY)\n",
    "    point3 = Point((x+1)*gridWidth+MAPMinX, (y+1)*gridHeight+MAPMinY)\n",
    "    point4 = Point(x*gridWidth+MAPMinX, (y+1)*gridHeight+MAPMinY)\n",
    "    gridGeom[nG] = Polygon([point1, point2, point3, point4])\n",
    "    if (nG %5 == 0): #print occasionally, should take about one second per grid\n",
    "        print(\"starting grid no {0} at x = {1}, y = {2} \".format(nG,gridGeom[nG].centroid.x,gridGeom[nG].centroid.y) )\n",
    "    counter = 0\n",
    "    #    Now for each grid square, find intersxn with all polygons, total the intersection population\n",
    "    #    Also, create 2 lists: of TRACTS and precincts that intersect each grid (efficiency shortcut)\n",
    "    \n",
    "    if( gridGeom[nG].intersection(MAP).area > 0.0001) : #don't bother w grids off the map\n",
    "        for t in range(nTracts):\n",
    "            # if (t%3000 == 0) :\n",
    "            #    print (\"grid {0}, tract no {1}, ({2},{3})\".format(nG,t,tractGeom[t].centroid.x,tractGeom[t].centroid.y) )\n",
    "            intersxnArea = 0.\n",
    "            if (notPoly[t] == 0) :  # tract is a simple polygon\n",
    "                intersxnArea = gridGeom[nG].intersection(tractGeom[t]).area  #replaced tractGeom w cleanedPoly\n",
    "            else : #tract is a multiPolygon, do the polygon intersections individually\n",
    "                print(\"I think tract\",t,\"is a multiPolygon\")\n",
    "                for geom in tractGeom[t].geoms :\n",
    "                    intersxnArea += gridGeom[nG].intersection(geom).area\n",
    "            if (intersxnArea > 0 and tractPop[t] > minTractPop) : # this tract is at least partially in this grid and populated \n",
    "                if (tractArea[t] == 0):  #should not happen, but debugging\n",
    "                    print(t,tractGeom[t].centroid.x, tractGeom[t].centroid.y)  #debug print\n",
    "                gridPop[nG] += tractPop[t]*intersxnArea/tractArea[t]\n",
    "                if tractPop[t] > (1.0 * avgDistrictPop) :  #flag if we have a mega tract\n",
    "                    uhoh = input(\"Uh oh! We have a tract that's bigger than a district.  What now?\")\n",
    "                else :\n",
    "                    gridTractNo[nG][counter] = t  #add this tract to this grid's list, update the no of tracts in grid\n",
    "                    counter +=1            \n",
    "                    nGridTracts[nG] = counter\n",
    "        # OK, now, loop over PRECINCTS to develop each grid's list of precincts (prev loop was for tracts)\n",
    "        counter = 0\n",
    "        for p in range(nPrecincts):\n",
    "            intersxnArea = 0.\n",
    "            if (notPolyVTD[p] == 0) :  # precinct is a simple polygon\n",
    "                intersxnArea = gridGeom[nG].intersection(vtdGeom[p]).area  #replaced tractGeom w cleanedPoly\n",
    "            else : #precinct is a multiPolygon, do the polygon intersections individually\n",
    "                for geom in vtdGeom[p].geoms :\n",
    "                    intersxnArea += gridGeom[nG].intersection(geom).area\n",
    "            intersxnArea = gridGeom[nG].intersection(vtdGeom[p]).area\n",
    "            if (intersxnArea > 0 and vtdPop[p] >0) : # this precinct is at least partially in this grid and recorded votes                 \n",
    "                gridPrecinctNo[nG][counter] = p  #add this precinct to this grid's list, update the no of tracts in grid\n",
    "                counter +=1            \n",
    "                nGridPrecincts[nG] = counter\n",
    "    gridDensity[nG] = gridPop[nG] / gridGeom[nG].area  #finished loop over tracts & vtd's.  Calceach grid's population density    \n",
    "\n",
    "minGridPop = np.min(gridPop)\n",
    "# avgGridPop = np.mean(gridPop)   #see below for explicit averaging, since there are so many empty grids\n",
    "maxGridPop = np.max(gridPop)\n",
    "nPopulatedGrids = 0.\n",
    "totPopulatedGridArea = 0.\n",
    "for nG in range(nGrids) :\n",
    "    if gridPop[nG] > 0. :\n",
    "        nPopulatedGrids +=1\n",
    "        totPopulatedGridArea += gridGeom[nG].area\n",
    "avgGridPop = np.sum(tractPop) / nPopulatedGrids\n",
    "avgGridDensity = np.sum(tractPop) / totPopulatedGridArea\n",
    "#avgGridDensity = np.average(gridDensity) #avgGridPop / (gridPL * gridPL) #these densities help home district algorithm\n",
    "maxGridDensity = np.max(gridDensity)\n",
    "print(\"done building grids. avgGridDensity, maxGridDensity,nPopulatedGrids =\",avgGridDensity,maxGridDensity,nPopulatedGrids)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "id": "808f513f-21af-4b03-8061-fdeeed33dafd",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "here is a heat map of grid density \n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<function matplotlib.pyplot.show(close=None, block=None)>"
      ]
     },
     "execution_count": 72,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "print(\"here is a heat map of grid density \")\n",
    "xyGridDensity = [[0.]*nGridsX for x in range (nGridsY) ]   #flipping x and y to get right orientation in pixel grid\n",
    "for nG in range (nGrids) : #  create polygon shape for each grid square, compute grid-square population density\n",
    "    x = int(nG % nGridsY)\n",
    "    y = int(nG / nGridsY)\n",
    "    if gridDensity[nG] > 0 :  #avoid log zero\n",
    "        xyGridDensity[x][y]=np.log(gridDensity[nG])\n",
    "c=plt.pcolormesh(xyGridDensity)\n",
    "plt.colorbar(c)\n",
    "plt.show"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "id": "4013f80b-4fc8-40a1-b708-ee29c29b3ffe",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2.1946680000140475e-06 1.1094100999987015e-05\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "10"
      ]
     },
     "execution_count": 73,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "print(np.min(vtdArea), np.min(tractArea))\n",
    "minTractPop"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "id": "ab450500-f1a4-4292-a2fe-71eb2217121d",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "I am working on tract number 0 of 1447 tracts\n",
      "I am working on tract number 20 of 1447 tracts\n",
      "I am working on tract number 40 of 1447 tracts\n",
      "we have 2 non-opposing shorted wedges for tract no 49\n",
      "7 yoyos for tract,wedge,wedgePop,r= 52 1 517830.2241409129 2.5265\n",
      "8 yoyos for tract,wedge,wedgePop,r= 52 1 2830.995393665624 1.2633\n",
      "9 yoyos for tract,wedge,wedgePop,r= 52 1 518435.11943069263 2.532\n",
      "10 yoyos for tract,wedge,wedgePop,r= 52 1 145464.84944402007 1.8976\n",
      "11 yoyos for tract,wedge,wedgePop,r= 52 1 502858.2227612608 2.2148\n",
      "12 yoyos for tract,wedge,wedgePop,r= 52 1 291742.34160081355 2.0562\n",
      "13 yoyos for tract,wedge,wedgePop,r= 52 1 482368.9020891017 2.1355\n",
      "13 yoyos for tract,wedge,wedgePop,r= 52 1 404352.5342569239 2.0959\n",
      "14 yoyos for tract,wedge,wedgePop,r= 52 1 344961.99790666986 2.0761\n",
      "15 yoyos for tract,wedge,wedgePop,r= 52 1 374954.0696772007 2.086\n",
      "I am working on tract number 60 of 1447 tracts\n",
      "we have 2 non-opposing shorted wedges for tract no 61\n",
      "7 yoyos for tract,wedge,wedgePop,r= 61 1 566284.3812367689 2.6565\n",
      "8 yoyos for tract,wedge,wedgePop,r= 61 1 10426.606284399517 1.3283\n",
      "9 yoyos for tract,wedge,wedgePop,r= 61 1 942909.8020711092 2.7942\n",
      "10 yoyos for tract,wedge,wedgePop,r= 61 1 38984.59040660306 2.0613\n",
      "10 yoyos for tract,wedge,wedgePop,r= 61 1 89222.47476492924 2.4278\n",
      "we have 2 non-opposing shorted wedges for tract no 65\n",
      "I am working on tract number 80 of 1447 tracts\n",
      "we have 2 non-opposing shorted wedges for tract no 87\n",
      "7 yoyos for tract,wedge,wedgePop,r= 90 2 233063.6148070072 0.8951\n",
      "8 yoyos for tract,wedge,wedgePop,r= 90 2 76970.96637539758 0.4475\n",
      "9 yoyos for tract,wedge,wedgePop,r= 90 2 233077.07350029497 0.8956\n",
      "10 yoyos for tract,wedge,wedgePop,r= 90 2 118656.81734122697 0.6715\n",
      "11 yoyos for tract,wedge,wedgePop,r= 90 2 222055.67856707514 0.7835\n",
      "12 yoyos for tract,wedge,wedgePop,r= 90 2 164495.13506100886 0.7275\n",
      "13 yoyos for tract,wedge,wedgePop,r= 90 2 203683.5457122539 0.7555\n",
      "I am working on tract number 100 of 1447 tracts\n",
      "I am working on tract number 120 of 1447 tracts\n",
      "7 yoyos for tract,wedge,wedgePop,r= 130 1 229499.6635743823 1.6998\n",
      "8 yoyos for tract,wedge,wedgePop,r= 130 1 2871.501989108714 0.8499\n",
      "9 yoyos for tract,wedge,wedgePop,r= 130 1 697284.6401140074 1.9424\n",
      "10 yoyos for tract,wedge,wedgePop,r= 130 1 51045.32481278968 1.3962\n",
      "10 yoyos for tract,wedge,wedgePop,r= 130 1 169190.41440721325 1.6693\n",
      "11 yoyos for tract,wedge,wedgePop,r= 130 1 521005.5479518435 1.8058\n",
      "11 yoyos for tract,wedge,wedgePop,r= 130 1 337286.0816631522 1.7376\n",
      "11 yoyos for tract,wedge,wedgePop,r= 130 1 237600.68008122174 1.7034\n",
      "12 yoyos for tract,wedge,wedgePop,r= 130 1 202399.99678291433 1.6863\n",
      "13 yoyos for tract,wedge,wedgePop,r= 130 1 218342.56632445476 1.6949\n",
      "I am working on tract number 140 of 1447 tracts\n",
      "7 yoyos for tract,wedge,wedgePop,r= 154 0 253522.5288410667 1.0347\n",
      "8 yoyos for tract,wedge,wedgePop,r= 154 0 100194.57638684093 0.5173\n",
      "9 yoyos for tract,wedge,wedgePop,r= 154 0 253026.4272771515 1.0109\n",
      "10 yoyos for tract,wedge,wedgePop,r= 154 0 140953.73236662883 0.7641\n",
      "11 yoyos for tract,wedge,wedgePop,r= 154 0 243370.20114726856 0.8875\n",
      "11 yoyos for tract,wedge,wedgePop,r= 154 0 204714.88950704664 0.8258\n",
      "12 yoyos for tract,wedge,wedgePop,r= 154 0 162978.6027162371 0.795\n",
      "I am working on tract number 160 of 1447 tracts\n",
      "we have 2 non-opposing shorted wedges for tract no 169\n",
      "we have 2 non-opposing shorted wedges for tract no 178\n",
      "7 yoyos for tract,wedge,wedgePop,r= 178 1 1089682.4258561034 3.004\n",
      "8 yoyos for tract,wedge,wedgePop,r= 178 1 7833.921745885862 1.502\n",
      "9 yoyos for tract,wedge,wedgePop,r= 178 1 3757041.538322388 3.6605\n",
      "9 yoyos for tract,wedge,wedgePop,r= 178 1 750643.4322507558 2.5812\n",
      "10 yoyos for tract,wedge,wedgePop,r= 178 1 30441.245660750195 2.0416\n",
      "10 yoyos for tract,wedge,wedgePop,r= 178 1 339654.55025990395 2.3114\n",
      "11 yoyos for tract,wedge,wedgePop,r= 178 1 652914.8629576403 2.4463\n",
      "11 yoyos for tract,wedge,wedgePop,r= 178 1 525548.638214437 2.3789\n",
      "11 yoyos for tract,wedge,wedgePop,r= 178 1 435799.0505765744 2.3452\n",
      "11 yoyos for tract,wedge,wedgePop,r= 178 1 388616.4833604762 2.3283\n",
      "11 yoyos for tract,wedge,wedgePop,r= 178 1 364614.5065378508 2.3199\n",
      "11 yoyos for tract,wedge,wedgePop,r= 178 1 352319.11834572576 2.3156\n",
      "I am working on tract number 180 of 1447 tracts\n",
      "we have 2 non-opposing shorted wedges for tract no 188\n",
      "we have 2 non-opposing shorted wedges for tract no 190\n",
      "we have 2 non-opposing shorted wedges for tract no 191\n",
      "I am working on tract number 200 of 1447 tracts\n",
      "I am working on tract number 220 of 1447 tracts\n",
      "I am working on tract number 240 of 1447 tracts\n",
      "I am working on tract number 260 of 1447 tracts\n",
      "7 yoyos for tract,wedge,wedgePop,r= 278 3 188818.2560282354 2.5546\n",
      "8 yoyos for tract,wedge,wedgePop,r= 278 3 130876.5772118282 1.2773\n",
      "9 yoyos for tract,wedge,wedgePop,r= 278 3 191225.99639801928 2.6045\n",
      "10 yoyos for tract,wedge,wedgePop,r= 278 3 154931.44341126012 1.9409\n",
      "10 yoyos for tract,wedge,wedgePop,r= 278 3 162522.58779369594 2.2727\n",
      "10 yoyos for tract,wedge,wedgePop,r= 278 3 170365.6220993836 2.4386\n",
      "11 yoyos for tract,wedge,wedgePop,r= 278 3 185226.39559882038 2.5216\n",
      "I am working on tract number 280 of 1447 tracts\n",
      "I am working on tract number 300 of 1447 tracts\n",
      "I am working on tract number 320 of 1447 tracts\n",
      "7 yoyos for tract,wedge,wedgePop,r= 334 2 188904.86464107537 0.8003\n",
      "8 yoyos for tract,wedge,wedgePop,r= 334 2 98892.76401275083 0.4001\n",
      "9 yoyos for tract,wedge,wedgePop,r= 334 2 221572.2037290304 0.9809\n",
      "10 yoyos for tract,wedge,wedgePop,r= 334 2 117592.57337754114 0.6905\n",
      "11 yoyos for tract,wedge,wedgePop,r= 334 2 208014.52114947198 0.8357\n",
      "12 yoyos for tract,wedge,wedgePop,r= 334 2 147130.1713347025 0.7631\n",
      "13 yoyos for tract,wedge,wedgePop,r= 334 2 187928.93956874008 0.7994\n",
      "14 yoyos for tract,wedge,wedgePop,r= 334 2 167025.80046496383 0.7813\n",
      "14 yoyos for tract,wedge,wedgePop,r= 334 2 176721.24138584654 0.7903\n",
      "I am working on tract number 340 of 1447 tracts\n",
      "I am working on tract number 360 of 1447 tracts\n",
      "I am working on tract number 380 of 1447 tracts\n",
      "I am working on tract number 400 of 1447 tracts\n",
      "7 yoyos for tract,wedge,wedgePop,r= 407 3 282078.7781172081 1.0582\n",
      "8 yoyos for tract,wedge,wedgePop,r= 407 3 84591.2123259806 0.5291\n",
      "9 yoyos for tract,wedge,wedgePop,r= 407 3 281169.8525658038 1.028\n",
      "9 yoyos for tract,wedge,wedgePop,r= 407 3 233834.66224709857 0.7786\n",
      "10 yoyos for tract,wedge,wedgePop,r= 407 3 104072.17506655485 0.6538\n",
      "10 yoyos for tract,wedge,wedgePop,r= 407 3 168170.27204351028 0.7162\n",
      "11 yoyos for tract,wedge,wedgePop,r= 407 3 203848.61626142054 0.7474\n",
      "11 yoyos for tract,wedge,wedgePop,r= 407 3 190572.06007116495 0.7318\n",
      "I am working on tract number 420 of 1447 tracts\n",
      "7 yoyos for tract,wedge,wedgePop,r= 437 3 1760244.876745016 3.5442\n",
      "7 yoyos for tract,wedge,wedgePop,r= 437 3 645754.347275065 1.7721\n",
      "8 yoyos for tract,wedge,wedgePop,r= 437 3 2058.230847285711 0.8861\n",
      "9 yoyos for tract,wedge,wedgePop,r= 437 3 387113.7941219276 1.7249\n",
      "10 yoyos for tract,wedge,wedgePop,r= 437 3 14137.139099753462 1.3055\n",
      "10 yoyos for tract,wedge,wedgePop,r= 437 3 33228.84861270803 1.5152\n",
      "10 yoyos for tract,wedge,wedgePop,r= 437 3 152901.73953071603 1.62\n",
      "10 yoyos for tract,wedge,wedgePop,r= 437 3 210552.5273310976 1.6724\n",
      "10 yoyos for tract,wedge,wedgePop,r= 437 3 273429.02574280894 1.6986\n",
      "10 yoyos for tract,wedge,wedgePop,r= 437 3 322894.813174887 1.7117\n",
      "11 yoyos for tract,wedge,wedgePop,r= 437 3 353944.8481398335 1.7183\n",
      "7 yoyos for tract,wedge,wedgePop,r= 438 3 1830762.1163938104 3.7333\n",
      "7 yoyos for tract,wedge,wedgePop,r= 438 3 743675.4176644438 1.8666\n",
      "8 yoyos for tract,wedge,wedgePop,r= 438 3 2651.3558256644756 0.9333\n",
      "9 yoyos for tract,wedge,wedgePop,r= 438 3 504218.7991814658 1.8223\n",
      "10 yoyos for tract,wedge,wedgePop,r= 438 3 14884.846478718391 1.3778\n",
      "10 yoyos for tract,wedge,wedgePop,r= 438 3 37364.106240257504 1.6\n",
      "10 yoyos for tract,wedge,wedgePop,r= 438 3 164023.682732006 1.7112\n",
      "10 yoyos for tract,wedge,wedgePop,r= 438 3 251736.32685856443 1.7667\n",
      "11 yoyos for tract,wedge,wedgePop,r= 438 3 349760.65813679143 1.7945\n",
      "12 yoyos for tract,wedge,wedgePop,r= 438 3 292398.36732038995 1.7806\n",
      "12 yoyos for tract,wedge,wedgePop,r= 438 3 319478.54235590197 1.7876\n",
      "12 yoyos for tract,wedge,wedgePop,r= 438 3 333175.367294376 1.791\n",
      "we have 2 non-opposing shorted wedges for tract no 439\n",
      "I am working on tract number 440 of 1447 tracts\n",
      "I am working on tract number 460 of 1447 tracts\n",
      "I am working on tract number 480 of 1447 tracts\n",
      "we have 2 non-opposing shorted wedges for tract no 488\n",
      "7 yoyos for tract,wedge,wedgePop,r= 491 1 1066560.6679148462 5.1608\n",
      "8 yoyos for tract,wedge,wedgePop,r= 491 1 62525.13005114754 2.5804\n",
      "9 yoyos for tract,wedge,wedgePop,r= 491 1 1063829.3464724668 4.9467\n",
      "9 yoyos for tract,wedge,wedgePop,r= 491 1 998574.8550790538 3.7635\n",
      "10 yoyos for tract,wedge,wedgePop,r= 491 1 121551.27344194078 3.172\n",
      "11 yoyos for tract,wedge,wedgePop,r= 491 1 409614.60545662587 3.4678\n",
      "12 yoyos for tract,wedge,wedgePop,r= 491 1 141715.17506560363 3.3199\n",
      "12 yoyos for tract,wedge,wedgePop,r= 491 1 210950.3419213026 3.3938\n",
      "12 yoyos for tract,wedge,wedgePop,r= 491 1 289619.6576198995 3.4308\n",
      "13 yoyos for tract,wedge,wedgePop,r= 491 1 350926.43339960126 3.4493\n",
      "I am working on tract number 500 of 1447 tracts\n",
      "we have 2 non-opposing shorted wedges for tract no 501\n",
      "I am working on tract number 520 of 1447 tracts\n",
      "we have 2 non-opposing shorted wedges for tract no 539\n",
      "I am working on tract number 540 of 1447 tracts\n",
      "I am working on tract number 560 of 1447 tracts\n",
      "7 yoyos for tract,wedge,wedgePop,r= 563 0 217807.35441107734 0.8228\n",
      "8 yoyos for tract,wedge,wedgePop,r= 563 0 71813.46080852073 0.4114\n",
      "9 yoyos for tract,wedge,wedgePop,r= 563 0 217566.93558605685 0.8212\n",
      "10 yoyos for tract,wedge,wedgePop,r= 563 0 96825.56082607576 0.6163\n",
      "10 yoyos for tract,wedge,wedgePop,r= 563 0 148123.29155743303 0.7187\n",
      "11 yoyos for tract,wedge,wedgePop,r= 563 0 210309.70763055427 0.7699\n",
      "11 yoyos for tract,wedge,wedgePop,r= 563 0 187035.55075686288 0.7443\n",
      "12 yoyos for tract,wedge,wedgePop,r= 563 0 167050.73845397306 0.7315\n",
      "loop31.0, tr563,wedgePops717630.57, 177242.0, 179988.1, 180126.9, 180273.5, Overedge?0, 0, 0, 0, ,Satisfied?0111,yoyo?12000 \n",
      "   targetWP, latest drx4 are    180428.6, 0.006, 0.084, 0.001, 0.001\n",
      "12 yoyos for tract,wedge,wedgePop,r= 563 0 177242.03548769245 0.7379\n",
      "loop32.0, tr563,wedgePops722603.07, 182214.5, 179988.1, 180126.9, 180273.5, Overedge?0, 0, 0, 0, ,Satisfied?0111,yoyo?12000 \n",
      "   targetWP, latest drx4 are    180428.6, 0.003, 0.084, 0.001, 0.001\n",
      "I am working on tract number 580 of 1447 tracts\n",
      "I am working on tract number 600 of 1447 tracts\n",
      "7 yoyos for tract,wedge,wedgePop,r= 608 0 291437.3260966122 1.0201\n",
      "8 yoyos for tract,wedge,wedgePop,r= 608 0 113542.28872857415 0.5101\n",
      "9 yoyos for tract,wedge,wedgePop,r= 608 0 291437.407167792 1.0201\n",
      "9 yoyos for tract,wedge,wedgePop,r= 608 0 240895.78245938316 0.7651\n",
      "10 yoyos for tract,wedge,wedgePop,r= 608 0 128669.21025083099 0.6376\n",
      "10 yoyos for tract,wedge,wedgePop,r= 608 0 163504.4635977018 0.7013\n",
      "11 yoyos for tract,wedge,wedgePop,r= 608 0 200165.23000305443 0.7332\n",
      "I am working on tract number 620 of 1447 tracts\n",
      "I am working on tract number 640 of 1447 tracts\n",
      "we have 2 non-opposing shorted wedges for tract no 653\n",
      "we have 2 non-opposing shorted wedges for tract no 654\n",
      "we have 2 non-opposing shorted wedges for tract no 656\n",
      "we have 2 non-opposing shorted wedges for tract no 658\n",
      "I am working on tract number 660 of 1447 tracts\n",
      "7 yoyos for tract,wedge,wedgePop,r= 663 0 219134.9941617937 2.2703\n",
      "8 yoyos for tract,wedge,wedgePop,r= 663 0 30827.77052770226 1.1351\n",
      "9 yoyos for tract,wedge,wedgePop,r= 663 0 291683.6137202158 2.9031\n",
      "10 yoyos for tract,wedge,wedgePop,r= 663 0 64918.99540721113 2.0191\n",
      "11 yoyos for tract,wedge,wedgePop,r= 663 0 275616.86229405855 2.4611\n",
      "11 yoyos for tract,wedge,wedgePop,r= 663 0 184975.04803617764 2.2401\n",
      "12 yoyos for tract,wedge,wedgePop,r= 663 0 89251.05024759553 2.1296\n",
      "12 yoyos for tract,wedge,wedgePop,r= 663 0 127472.41802738901 2.1849\n",
      "12 yoyos for tract,wedge,wedgePop,r= 663 0 158089.70878308735 2.2125\n",
      "12 yoyos for tract,wedge,wedgePop,r= 663 0 172124.07579076302 2.2263\n",
      "we hit a zero wedgePopDelta for tract, loop, wedge, wedgeAngle,dr,pop 664 17.0 1 55.532 2.9382 269015.3\n",
      "7 yoyos for tract,wedge,wedgePop,r= 664 1 269015.2898126025 3.516\n",
      "7 yoyos for tract,wedge,wedgePop,r= 668 0 224766.1097598404 2.5365\n",
      "8 yoyos for tract,wedge,wedgePop,r= 668 0 41648.236938118265 1.2683\n",
      "9 yoyos for tract,wedge,wedgePop,r= 668 0 247158.7649927495 2.9332\n",
      "10 yoyos for tract,wedge,wedgePop,r= 668 0 66648.37899634877 2.1007\n",
      "11 yoyos for tract,wedge,wedgePop,r= 668 0 222181.92414258077 2.517\n",
      "12 yoyos for tract,wedge,wedgePop,r= 668 0 99955.55063739493 2.3089\n",
      "13 yoyos for tract,wedge,wedgePop,r= 668 0 187484.94166255766 2.4129\n",
      "14 yoyos for tract,wedge,wedgePop,r= 668 0 136715.70210752377 2.3609\n",
      "14 yoyos for tract,wedge,wedgePop,r= 668 0 160296.87346257502 2.3869\n",
      "14 yoyos for tract,wedge,wedgePop,r= 668 0 175392.78503887498 2.3999\n",
      "loop31.0, tr668,wedgePops723759.26, 182558.7, 180229.5, 180383.4, 180587.6, Overedge?0, 0, 0, 0, ,Satisfied?0111,yoyo?14224 \n",
      "   targetWP, latest drx4 are    180428.6, 0.007, 0.004, 0.007, 0.005\n",
      "7 yoyos for tract,wedge,wedgePop,r= 669 1 267606.9112879919 2.4759\n",
      "I am working on tract number 680 of 1447 tracts\n",
      "I am working on tract number 700 of 1447 tracts\n",
      "we have 2 non-opposing shorted wedges for tract no 707\n",
      "I am working on tract number 720 of 1447 tracts\n",
      "I am working on tract number 740 of 1447 tracts\n",
      "I am working on tract number 760 of 1447 tracts\n",
      "I am working on tract number 780 of 1447 tracts\n",
      "I am working on tract number 800 of 1447 tracts\n",
      "I am working on tract number 820 of 1447 tracts\n",
      "7 yoyos for tract,wedge,wedgePop,r= 829 0 292205.0621187253 1.3393\n",
      "8 yoyos for tract,wedge,wedgePop,r= 829 0 102461.80234352284 0.6696\n",
      "9 yoyos for tract,wedge,wedgePop,r= 829 0 292248.72158521495 1.3403\n",
      "9 yoyos for tract,wedge,wedgePop,r= 829 0 266083.8962549419 1.005\n",
      "10 yoyos for tract,wedge,wedgePop,r= 829 0 119573.29920382306 0.8373\n",
      "11 yoyos for tract,wedge,wedgePop,r= 829 0 186487.90132043237 0.9211\n",
      "12 yoyos for tract,wedge,wedgePop,r= 829 0 142882.70020061522 0.8792\n",
      "12 yoyos for tract,wedge,wedgePop,r= 829 0 159771.3511203942 0.9002\n",
      "12 yoyos for tract,wedge,wedgePop,r= 829 0 171466.43903053118 0.9107\n",
      "I am working on tract number 840 of 1447 tracts\n",
      "7 yoyos for tract,wedge,wedgePop,r= 848 2 224791.57546945056 1.9915\n",
      "8 yoyos for tract,wedge,wedgePop,r= 848 2 21099.827135509287 0.9958\n",
      "9 yoyos for tract,wedge,wedgePop,r= 848 2 223020.73242898585 1.9373\n",
      "10 yoyos for tract,wedge,wedgePop,r= 848 2 63466.13605631588 1.4665\n",
      "11 yoyos for tract,wedge,wedgePop,r= 848 2 206648.09801971618 1.7019\n",
      "12 yoyos for tract,wedge,wedgePop,r= 848 2 102256.7488875762 1.5842\n",
      "12 yoyos for tract,wedge,wedgePop,r= 848 2 161597.761229599 1.6431\n",
      "13 yoyos for tract,wedge,wedgePop,r= 848 2 199683.8539040907 1.6725\n",
      "we have 2 non-opposing shorted wedges for tract no 855\n",
      "we have 2 non-opposing shorted wedges for tract no 859\n",
      "I am working on tract number 860 of 1447 tracts\n",
      "I am working on tract number 880 of 1447 tracts\n",
      "I am working on tract number 900 of 1447 tracts\n",
      "I am working on tract number 920 of 1447 tracts\n",
      "I am working on tract number 940 of 1447 tracts\n",
      "we have 2 non-opposing shorted wedges for tract no 948\n",
      "we have 2 non-opposing shorted wedges for tract no 957\n",
      "I am working on tract number 960 of 1447 tracts\n",
      "we have 2 non-opposing shorted wedges for tract no 963\n",
      "I am working on tract number 980 of 1447 tracts\n",
      "we have 2 non-opposing shorted wedges for tract no 982\n",
      "we have 2 non-opposing shorted wedges for tract no 985\n",
      "I am working on tract number 1000 of 1447 tracts\n",
      "I am working on tract number 1020 of 1447 tracts\n",
      "I am working on tract number 1040 of 1447 tracts\n",
      "we hit a zero wedgePopDelta for tract, loop, wedge, wedgeAngle,dr,pop 1044 15.0 1 54.738 3.0778 233929.4\n",
      "we hit a zero wedgePopDelta for tract, loop, wedge, wedgeAngle,dr,pop 1044 16.0 1 54.738 2.703 233929.4\n",
      "7 yoyos for tract,wedge,wedgePop,r= 1045 0 273527.06034366915 2.4311\n",
      "8 yoyos for tract,wedge,wedgePop,r= 1045 0 17380.73626493037 1.2155\n",
      "9 yoyos for tract,wedge,wedgePop,r= 1045 0 282298.31363919645 2.7203\n",
      "10 yoyos for tract,wedge,wedgePop,r= 1045 0 58659.265334101394 1.9679\n",
      "11 yoyos for tract,wedge,wedgePop,r= 1045 0 264048.6929986532 2.3441\n",
      "11 yoyos for tract,wedge,wedgePop,r= 1045 0 195929.99357255435 2.156\n",
      "12 yoyos for tract,wedge,wedgePop,r= 1045 0 105843.84821122451 2.062\n",
      "12 yoyos for tract,wedge,wedgePop,r= 1045 0 151522.02478131748 2.109\n",
      "12 yoyos for tract,wedge,wedgePop,r= 1045 0 172963.09024763983 2.1325\n",
      "we have 2 non-opposing shorted wedges for tract no 1052\n",
      "7 yoyos for tract,wedge,wedgePop,r= 1056 2 277253.84625675005 1.0409\n",
      "8 yoyos for tract,wedge,wedgePop,r= 1056 2 117555.20239552818 0.5205\n",
      "9 yoyos for tract,wedge,wedgePop,r= 1056 2 277259.90016727353 1.0412\n",
      "9 yoyos for tract,wedge,wedgePop,r= 1056 2 193218.57722010917 0.7808\n",
      "10 yoyos for tract,wedge,wedgePop,r= 1056 2 137807.3168781332 0.6506\n",
      "10 yoyos for tract,wedge,wedgePop,r= 1056 2 152593.48338180635 0.7157\n",
      "10 yoyos for tract,wedge,wedgePop,r= 1056 2 165441.64253595998 0.7483\n",
      "I am working on tract number 1060 of 1447 tracts\n",
      "I am working on tract number 1080 of 1447 tracts\n",
      "I am working on tract number 1100 of 1447 tracts\n",
      "7 yoyos for tract,wedge,wedgePop,r= 1115 0 210191.19025899807 1.6401\n",
      "8 yoyos for tract,wedge,wedgePop,r= 1115 0 22590.609405841766 0.8201\n",
      "9 yoyos for tract,wedge,wedgePop,r= 1115 0 245453.39971185534 1.9462\n",
      "10 yoyos for tract,wedge,wedgePop,r= 1115 0 50184.06420413914 1.3831\n",
      "11 yoyos for tract,wedge,wedgePop,r= 1115 0 218535.65198822663 1.6646\n",
      "12 yoyos for tract,wedge,wedgePop,r= 1115 0 85692.8021892627 1.5239\n",
      "12 yoyos for tract,wedge,wedgePop,r= 1115 0 173210.5448630698 1.5943\n",
      "13 yoyos for tract,wedge,wedgePop,r= 1115 0 204487.57264987513 1.6295\n",
      "13 yoyos for tract,wedge,wedgePop,r= 1115 0 192967.74168763935 1.6119\n",
      "13 yoyos for tract,wedge,wedgePop,r= 1115 0 185720.6218663892 1.6031\n",
      "7 yoyos for tract,wedge,wedgePop,r= 1118 2 259745.72521370946 1.4896\n",
      "8 yoyos for tract,wedge,wedgePop,r= 1118 2 13515.511766588897 0.7448\n",
      "9 yoyos for tract,wedge,wedgePop,r= 1118 2 370862.8744443034 1.9029\n",
      "10 yoyos for tract,wedge,wedgePop,r= 1118 2 112656.20781660653 1.3238\n",
      "11 yoyos for tract,wedge,wedgePop,r= 1118 2 348302.4268956573 1.6134\n",
      "11 yoyos for tract,wedge,wedgePop,r= 1118 2 225969.3210354381 1.4686\n",
      "12 yoyos for tract,wedge,wedgePop,r= 1118 2 145989.7706974424 1.3962\n",
      "12 yoyos for tract,wedge,wedgePop,r= 1118 2 173094.7663739043 1.4324\n",
      "13 yoyos for tract,wedge,wedgePop,r= 1118 2 197129.41849696502 1.4505\n",
      "13 yoyos for tract,wedge,wedgePop,r= 1118 2 184518.9877820648 1.4415\n",
      "I am working on tract number 1120 of 1447 tracts\n",
      "we hit a zero wedgePopDelta for tract, loop, wedge, wedgeAngle,dr,pop 1124 8.0 1 55.13 2.1579 187571.1\n",
      "we hit a zero wedgePopDelta for tract, loop, wedge, wedgeAngle,dr,pop 1124 9.0 1 55.13 2.1164 187571.1\n",
      "we hit a zero wedgePopDelta for tract, loop, wedge, wedgeAngle,dr,pop 1136 7.0 1 74.084 1.8755 185012.6\n",
      "we hit a zero wedgePopDelta for tract, loop, wedge, wedgeAngle,dr,pop 1136 8.0 1 74.084 1.8521 185012.6\n",
      "we have 2 non-opposing shorted wedges for tract no 1139\n",
      "I am working on tract number 1140 of 1447 tracts\n",
      "I am working on tract number 1160 of 1447 tracts\n",
      "7 yoyos for tract,wedge,wedgePop,r= 1176 1 270154.98583865474 3.9545\n",
      "8 yoyos for tract,wedge,wedgePop,r= 1176 1 73337.7676922701 1.9773\n",
      "9 yoyos for tract,wedge,wedgePop,r= 1176 1 298666.8503943549 4.1941\n",
      "loop31.0, tr1176,wedgePops645388.11, 72735.1, 140613.5, 216054.0, 215985.4, Overedge?1, 0, 0, 0, ,Satisfied?0011,yoyo?0902 \n",
      "   targetWP, latest drx4 are    216326.4, 0.815, -1.108, 0.005, 0.145\n",
      "10 yoyos for tract,wedge,wedgePop,r= 1176 1 140613.53902451225 3.0857\n",
      "loop32.0, tr1176,wedgePops652804.7, 72735.1, 148030.1, 216054.0, 215985.4, Overedge?1, 0, 0, 0, ,Satisfied?0011,yoyo?01002 \n",
      "   targetWP, latest drx4 are    216326.4, 0.815, 0.554, 0.005, 0.145\n",
      "10 yoyos for tract,wedge,wedgePop,r= 1176 1 148030.13616939832 3.6399\n",
      "loop33.0, tr1176,wedgePops766863.75, 72735.1, 262089.2, 216054.0, 215985.4, Overedge?1, 0, 0, 0, ,Satisfied?0011,yoyo?01002 \n",
      "   targetWP, latest drx4 are    216326.4, 0.815, 0.277, 0.005, 0.145\n",
      "11 yoyos for tract,wedge,wedgePop,r= 1176 1 262089.18264197142 3.917\n",
      "loop34.0, tr1176,wedgePops687144.56, 72735.1, 182370.0, 216054.0, 215985.4, Overedge?1, 0, 0, 0, ,Satisfied?0011,yoyo?01102 \n",
      "   targetWP, latest drx4 are    216326.4, 0.815, -0.139, 0.005, 0.145\n",
      "12 yoyos for tract,wedge,wedgePop,r= 1176 1 182369.99295577576 3.7785\n",
      "loop35.0, tr1176,wedgePops735114.14, 72735.1, 230339.6, 216054.0, 215985.4, Overedge?1, 0, 0, 0, ,Satisfied?0011,yoyo?01202 \n",
      "   targetWP, latest drx4 are    216326.4, 0.815, 0.069, 0.005, 0.145\n",
      "13 yoyos for tract,wedge,wedgePop,r= 1176 1 230339.56986574747 3.8478\n",
      "loop36.0, tr1176,wedgePops710169.6, 72735.1, 205395.0, 216054.0, 215985.4, Overedge?1, 0, 0, 0, ,Satisfied?0011,yoyo?01302 \n",
      "   targetWP, latest drx4 are    216326.4, 0.815, -0.035, 0.005, 0.145\n",
      "14 yoyos for tract,wedge,wedgePop,r= 1176 1 205395.0342096943 3.8131\n",
      "loop37.0, tr1176,wedgePops722271.83, 72735.1, 217497.3, 216054.0, 215985.4, Overedge?1, 0, 0, 0, ,Satisfied?0011,yoyo?01402 \n",
      "   targetWP, latest drx4 are    216326.4, 0.815, 0.017, 0.005, 0.145\n",
      "I am working on tract number 1180 of 1447 tracts\n",
      "we hit a zero wedgePopDelta for tract, loop, wedge, wedgeAngle,dr,pop 1189 11.0 1 52.063 4.381 261837.0\n",
      "7 yoyos for tract,wedge,wedgePop,r= 1193 1 330051.1073688952 4.9591\n",
      "we have 2 non-opposing shorted wedges for tract no 1195\n",
      "we hit a zero wedgePopDelta for tract, loop, wedge, wedgeAngle,dr,pop 1196 21.0 1 58.949 4.6568 300638.6\n",
      "I am working on tract number 1200 of 1447 tracts\n",
      "we have 2 non-opposing shorted wedges for tract no 1201\n",
      "we have 2 non-opposing shorted wedges for tract no 1213\n",
      "we have 2 non-opposing shorted wedges for tract no 1214\n",
      "we have 2 non-opposing shorted wedges for tract no 1216\n",
      "we have 2 non-opposing shorted wedges for tract no 1218\n",
      "I am working on tract number 1220 of 1447 tracts\n",
      "we have 2 non-opposing shorted wedges for tract no 1221\n",
      "we have 2 non-opposing shorted wedges for tract no 1222\n",
      "I am working on tract number 1240 of 1447 tracts\n",
      "we have 2 non-opposing shorted wedges for tract no 1243\n",
      "I am working on tract number 1260 of 1447 tracts\n",
      "7 yoyos for tract,wedge,wedgePop,r= 1261 2 305977.1920462894 2.7312\n",
      "8 yoyos for tract,wedge,wedgePop,r= 1261 2 33829.68155167968 1.3656\n",
      "9 yoyos for tract,wedge,wedgePop,r= 1261 2 306755.2098675868 2.7501\n",
      "10 yoyos for tract,wedge,wedgePop,r= 1261 2 132015.43178853663 2.0579\n",
      "11 yoyos for tract,wedge,wedgePop,r= 1261 2 293919.684705224 2.404\n",
      "11 yoyos for tract,wedge,wedgePop,r= 1261 2 215907.39648372697 2.2309\n",
      "12 yoyos for tract,wedge,wedgePop,r= 1261 2 152546.04406757784 2.1444\n",
      "13 yoyos for tract,wedge,wedgePop,r= 1261 2 184570.46033748818 2.1877\n",
      "14 yoyos for tract,wedge,wedgePop,r= 1261 2 166880.38357178462 2.166\n",
      "14 yoyos for tract,wedge,wedgePop,r= 1261 2 175959.18126007207 2.1768\n",
      "I am working on tract number 1280 of 1447 tracts\n",
      "I am working on tract number 1300 of 1447 tracts\n",
      "I am working on tract number 1320 of 1447 tracts\n",
      "we have 2 non-opposing shorted wedges for tract no 1325\n",
      "we have 2 non-opposing shorted wedges for tract no 1331\n",
      "7 yoyos for tract,wedge,wedgePop,r= 1336 1 336755.9913760904 3.8304\n",
      "8 yoyos for tract,wedge,wedgePop,r= 1336 1 31624.775037954678 1.9152\n",
      "9 yoyos for tract,wedge,wedgePop,r= 1336 1 580869.1282104907 3.9631\n",
      "10 yoyos for tract,wedge,wedgePop,r= 1336 1 72262.35481087334 2.9391\n",
      "10 yoyos for tract,wedge,wedgePop,r= 1336 1 118357.844998017 3.4511\n",
      "10 yoyos for tract,wedge,wedgePop,r= 1336 1 147916.26875450573 3.7071\n",
      "11 yoyos for tract,wedge,wedgePop,r= 1336 1 348884.36887234414 3.8351\n",
      "12 yoyos for tract,wedge,wedgePop,r= 1336 1 217417.31592181962 3.7711\n",
      "12 yoyos for tract,wedge,wedgePop,r= 1336 1 272468.21851066855 3.8031\n",
      "12 yoyos for tract,wedge,wedgePop,r= 1336 1 306133.7666125895 3.8191\n",
      "we have 2 non-opposing shorted wedges for tract no 1337\n",
      "I am working on tract number 1340 of 1447 tracts\n",
      "7 yoyos for tract,wedge,wedgePop,r= 1349 3 186492.2952213125 3.0617\n",
      "8 yoyos for tract,wedge,wedgePop,r= 1349 3 137792.28915199186 1.5309\n",
      "9 yoyos for tract,wedge,wedgePop,r= 1349 3 186492.9157473376 3.0617\n",
      "10 yoyos for tract,wedge,wedgePop,r= 1349 3 161491.60156961592 2.2963\n",
      "10 yoyos for tract,wedge,wedgePop,r= 1349 3 168004.8943989134 2.679\n",
      "10 yoyos for tract,wedge,wedgePop,r= 1349 3 172843.43488190265 2.8704\n",
      "10 yoyos for tract,wedge,wedgePop,r= 1349 3 176180.5451871174 2.9661\n",
      "11 yoyos for tract,wedge,wedgePop,r= 1349 3 184801.42372478973 3.0139\n",
      "I am working on tract number 1360 of 1447 tracts\n",
      "we hit a zero wedgePopDelta for tract, loop, wedge, wedgeAngle,dr,pop 1370 8.0 1 55.555 2.1513 184150.9\n",
      "we hit a zero wedgePopDelta for tract, loop, wedge, wedgeAngle,dr,pop 1370 9.0 1 55.555 2.1294 184150.9\n",
      "I am working on tract number 1380 of 1447 tracts\n",
      "7 yoyos for tract,wedge,wedgePop,r= 1396 3 270335.67869397823 2.2129\n",
      "8 yoyos for tract,wedge,wedgePop,r= 1396 3 59426.378540787526 1.1064\n",
      "9 yoyos for tract,wedge,wedgePop,r= 1396 3 270259.75320098625 2.2104\n",
      "9 yoyos for tract,wedge,wedgePop,r= 1396 3 193120.55046747753 1.6584\n",
      "10 yoyos for tract,wedge,wedgePop,r= 1396 3 73355.77303699433 1.3824\n",
      "10 yoyos for tract,wedge,wedgePop,r= 1396 3 87003.1997294002 1.5204\n",
      "10 yoyos for tract,wedge,wedgePop,r= 1396 3 115333.73800429716 1.5894\n",
      "10 yoyos for tract,wedge,wedgePop,r= 1396 3 152686.47696861904 1.6239\n",
      "10 yoyos for tract,wedge,wedgePop,r= 1396 3 172994.0739169368 1.6412\n",
      "I am working on tract number 1400 of 1447 tracts\n",
      "we have 2 non-opposing shorted wedges for tract no 1412\n",
      "we have 2 non-opposing shorted wedges for tract no 1415\n",
      "I am working on tract number 1420 of 1447 tracts\n",
      "we have 2 non-opposing shorted wedges for tract no 1436\n",
      "we have 2 non-opposing shorted wedges for tract no 1438\n",
      "I am working on tract number 1440 of 1447 tracts\n",
      "Sum of weights over all precinct home districts should have been 1.000, but was  1.0000074412113245\n",
      "Average and max number of wedgePop loops per tract were:  9.071181755355909 37.0\n",
      "min,average,max of Home District areas were:  0.0 4.03099811135283 14.964982191895952\n",
      "calculated statewide vote was 0.42956780951432755, should have been 0.43061680507699845\n",
      "calcd statewide Hispanic pop was 0.19054439217411528, should have been 0.14967765982173692\n",
      "calcd statewide Black pop was 0.03627240176565278, should have been 0.030379059302209983\n",
      "fraction of HDs that with altered wedge angles near boundaries =  0.37318590186592954\n"
     ]
    }
   ],
   "source": [
    "#From CO code  Bisect for yoyo > 3, precinct calcs after wedges finalized\n",
    "#3/2/22 - use VAP, not tractPop for racial data\n",
    "#minTractPop = 10  #this is usually set in a prior block\n",
    "pi=3.1415926536\n",
    "nWedges = 4  #number of wedges per home district polygon  \n",
    "avgWedgeAngle = 2*pi / nWedges\n",
    "wedgeTriAR = [math.sin(pi/nWedges)*math.cos(pi/nWedges)]*nWedges  #wedge triangle area ratio (= area / r*r)\n",
    "angle = [0.]*nWedges\n",
    "angle2 = [0.]*nWedges\n",
    "pt1 = [Point(0,0)]*nWedges  #these four define the polygon wedge for a growing home district\n",
    "pt2 = [Point(0,0)]*nWedges\n",
    "pt3 = [Point(0,0)]*nWedges\n",
    "pt4 = [Point(0,0)]*nWedges\n",
    "oldR = [0.]*nWedges  #wedge radius from previous loop\n",
    "# guessedR = [0.]*nWedges  #obsolete; was wedge radius if we extrapolate from population density of most recent wedge piece\n",
    "printPoly = [Polygon([(0,0),(0,1),(1,1)])]*nWedges #for debugging\n",
    "wedgePop = [0.]*nWedges\n",
    "tractLoopCounter = [0.]* nTracts  #this tracks how many loops per tract to get to target wedge Pop\n",
    "nearEdge = [0.]* nTracts   #not yet implemented; this will flag tracts near map edge for reprocessing\n",
    "tractUse = [0.] * nTracts  #this will store how much we use this tract in ALL HD's vs. expectation\n",
    "precinctUse = [0.] * nPrecincts   #same, but for each precinct / VTD\n",
    "loopTractUse = [0.] * nTracts  #same as above two, but only for the current loop / tract\n",
    "loopPrecinctUse = [0.] * nPrecincts\n",
    "HDvPop = [0.]*nTracts\n",
    "HDvGOP = [0.]*nTracts  #GOP lean of each tract's \"home district\"\n",
    "HDvBlack = [0.]*nTracts\n",
    "HDvHisp = [0.]*nTracts #pct Hispanic by home district\n",
    "HDweight = [0.]*nTracts  #relative weight of each district.  In absence of splits, will equal precinct pop\n",
    "HDarea = [0.]*nTracts  #geographical area of each home district\n",
    "toler = 0.005  #adjustable - fractional slop in district population.  normally 0.01, to be reduced to 0.005\n",
    "tolerPop = toler * avgDistrictPop  #absolute slop in district pop\n",
    "nLoopPrint = 30  #at this loop number, we alert user of problem\n",
    "nGiveUp = 40  #we punt after this many loops\n",
    "nLoopSuperPrint = nGiveUp - 2 # at this loop number, we output wedge growth visuals\n",
    "wrongPop = [0.]*nTracts\n",
    "normalGain = 0.8  #adjustable - a bit less than 1.0 for stability, how far we step relative to expected perfect guess\n",
    "yoyoFactor = 0.3 #rate of reduction in gain as solver continues to yoyo in solving a wedge  #not currently used ***\n",
    "globalMax_dr = 0.5*(MAP.area/nDistricts) ** 0.5  #put a reasonable upper limit on wedge radial growth step size\n",
    "tractPrintInterval = 20  #for tracking progress\n",
    "minTractArea = 0.00001 * MAP.area / nTracts  #failsafe for later div-by-zero\n",
    "homePopDensity = avgGridDensity  #seed this\n",
    "didWeRestart = [0] * nTracts  #will flag if we adjusted wedge angles due to a single shorted wedge\n",
    "coeff1 = 0.3  #linear term. we will adjust this empirically to tighten tract weighting near boundaries\n",
    "coeff2 = 0.3  #quadratic term.  These two control distortion in wedge angles relative to wedgePop shortness\n",
    "printAngle = [45.] * nTracts  #for debugging, tracking the exit angle.  Set at 45 if not triggered\n",
    "minWedgePop = [avgDistrictPop/nWedges] * nTracts  #wedge pop for wedge facing boundary (for tracts near boundaries)\n",
    "maxWideAngle = 0.8  #adjustable parameter. fraction of pi for maxWideAngle (avoid wedges too close to half a pie\n",
    "\n",
    "for t in range(nTracts) :  #(nTracts):  #loop on each tract.  Start by resetting stats\n",
    "    gain = normalGain  #in case last precinct had convergence problems\n",
    "    if (t % tractPrintInterval) == 0 : \n",
    "        print(\"I am working on tract number {0} of {1} tracts\".format(t,nTracts) )\n",
    "    tractLoopCounter[t] = 0.  #for stability stats, will track how many times we need to loop for each tract\n",
    "    # isActiveG = [0]*nGrids  #resets whether each grid is relevant to this tract (not used; see alt grid turn-on method)\n",
    "    if (tractArea[t] > minTractArea) :  #too lazy to indent everything.  We'll catch zero tractArea later\n",
    "        homePopDensity = tractPop[t]/tractArea[t]  #temporary - estimate the local density for initial step\n",
    "    tractCP = Point(tractGeom[t].centroid.x,tractGeom[t].centroid.y)  #shorthand for centroid of each tract\n",
    "    for nG in range(nGrids):\n",
    "        if gridGeom[nG].contains(tractCP) :  #which grid contains the centroid of this tract?  Turn it on!\n",
    "            # isActiveG[nG] = 1  #I don't think I use this\n",
    "            homeGridDensity = gridDensity[nG]\n",
    "    maxStartDensity = max(homePopDensity,homeGridDensity)\n",
    "    minR = (avgDistrictPop / maxStartDensity / pi)**0.5   # conservative estimated radius of this tract's district\n",
    "    tinyR = 0.01 * minR   #ensures we start with small, but not infinitesimal wedge populations\n",
    "    randomAngle = random.uniform(0,2.*pi)  #imparts random orientation to our starting wedge\n",
    "    loopTractUse = [0.]*nTracts  #this and below help us reset tract n precinct use after a wedge reset\n",
    "    loopPrecinctUse = [0.]*nPrecincts\n",
    "    # ***GROW WEDGES SIMULTANEOUSLY via ARRAYS, SO WE CAN REACT ON FLY TO BOUNDARY STOPS\n",
    "    HDpop = 0.  #running total of this tract's \"home district\" population\n",
    "    sumPartialWedgePops = 0.  #this will track total pop of wedges that ran into a boundary before meeting quota\n",
    "    nActiveWedges = nWedges #active wedges have not run over boudnary\n",
    "    targetWedgePop = avgDistrictPop / nWedges  #at beginning, each wedge expected to contribute equally to district pop\n",
    "    #latestWedgeDensity = [0.]*nWedges  #stop using # pop'n density of the wedge piece we just added or subtracted\n",
    "    wedgePop = [0.]*nWedges\n",
    "    oldWedgePop = [0.]*nWedges  #wedge pop from previous round (needed for NR projection)\n",
    "    wedgePopGap = [0.]*nWedges\n",
    "    isOverEdge = [0] *nWedges #each wedge is still fully inside map boundary\n",
    "    isSatisfied = [0] * nWedges #wedges close enough to target are not improved upon\n",
    "    yoyoCount = [0] * nWedges #tracks how many times we've reversed this wedge's growth vs. shrink at current wPop target\n",
    "    wedgeMaxR = [0.] * nWedges #will track the largest radius this wedge has seen (to cap yoyo bisection step)\n",
    "    wedgeAngle = [avgWedgeAngle] * nWedges #reset to equi-angle when starting each tract    \n",
    "    currentR = [0.]*nWedges\n",
    "    old_dr = [0.]*nWedges\n",
    "    wedgeStop = 0  #obsolete? this will flag if we need to rejigger oldR when we stopped an over-boundary wedge\n",
    "    for nW in range(nWedges):\n",
    "        currentR[nW] = tinyR  #each wedge starts as a tiny triangle of this radius\n",
    "        old_dr[nW] = currentR[nW] #this will track the last radial step (to help convergence)\n",
    "    oldR = [0.]*nWedges   #for remembering last loop's wedge radius\n",
    "    max_dr = [globalMax_dr]*nWedges  #reset max possible positive radial step size\n",
    "    for nW in range(nWedges) :  #this loop: set up tiny wedges in each direction to seed each wedge loop\n",
    "        angle[nW] = (nW-0.5)*wedgeAngle[nW]+randomAngle   #local variable for orientation of START of wedge\n",
    "        angle2[nW] = angle[nW]+wedgeAngle[nW]      #local angle for clockwise END of wedge\n",
    "        pt1[nW] = tractCP\n",
    "        pt2[nW] = Point(tractCP.x+currentR[nW]*math.cos(angle[nW]),  tractCP.y+currentR[nW]*math.sin(angle[nW]) )\n",
    "        pt3[nW] = Point(tractCP.x+currentR[nW]*math.cos(angle2[nW]), tractCP.y+currentR[nW]*math.sin(angle2[nW]) )\n",
    "        wedgePoly = Polygon([pt1[nW], pt2[nW], pt3[nW] ])\n",
    "        wedgePop[nW] = tractPop[t]* wedgePoly.area/max(tractArea[t],minTractArea)  #min prevents rare div-by-zero\n",
    "    HDpop = np.sum(wedgePop)\n",
    "    if (tractPop[t] < minTractPop or tractArea[t] == 0 or isSkippedTract[t] == 1):\n",
    "        #go directly to jail, do not pass Go, this tract doesn't count\n",
    "        HDpop = avgDistrictPop  #white lie to kick us out of loop\n",
    "    while abs (HDpop - avgDistrictPop) > tolerPop :  #until we've grown the home district to the right size...\n",
    "        for nW in range(nWedges) :  #for each wedge, we'll build to gain pop or shrink to lose population ...\n",
    "            neededWedgePop = targetWedgePop - wedgePop[nW]\n",
    "            isSatisfied[nW] = 0  #may not be true, but we'll confirm immediately below in case target changed last loop\n",
    "            if abs(neededWedgePop/targetWedgePop) < 0.5*toler :  #is this wedge close enough to stop iterating on it?\n",
    "                isSatisfied[nW] = 1\n",
    "            if isOverEdge[nW] == 0 and isSatisfied[nW] == 0:   #we skip over-boundary and near-perfect wedges\n",
    "                wedgePopDelta = wedgePop[nW] - oldWedgePop[nW]\n",
    "                if (wedgePopDelta == 0): #our last wedge change was in an empty area (desert or off map)\n",
    "                    gainAdjust = 1./gain  #for Euler method, we use effective gain = 1.0\n",
    "                    guessedRsquared = currentR[nW]*currentR[nW] * targetWedgePop / wedgePop[nW]\n",
    "                    # can't use Newton-Raphson since last dy was zero, use Euler instead\n",
    "                    print(\"we hit a zero wedgePopDelta for tract, loop, wedge, wedgeAngle,dr,pop\",t,tractLoopCounter[t],\n",
    "                          nW, round(180./pi*wedgeAngle[nW],3),round(currentR[nW],4),round(wedgePop[nW],1))\n",
    "                else: #use N-R estimation\n",
    "                    gainAdjust = 1.0\n",
    "                    R2delta = currentR[nW]*currentR[nW] - oldR[nW]*oldR[nW]  #this and below are run/rise of current slope\n",
    "                    guessedRsquared = currentR[nW]*currentR[nW] + R2delta / wedgePopDelta * neededWedgePop\n",
    "                    \n",
    "                guessedRsquared = max( guessedRsquared, 0. ) #minimum guardrail\n",
    "                guessed_dr = guessedRsquared ** 0.5 - currentR[nW]  #best guess for wedge radius change\n",
    "                #gain = max(0.3,normalGain ** (1. + yoyoFactor * yoyoCount[nW]))  #obsolete; using bisect\n",
    "                dr = gain * gainAdjust * guessed_dr   #gain typically ~0.8 for stability\n",
    "                dr = max( -0.5*currentR[nW],min(dr,max_dr[nW]) )  #apply min and max guardrails to wedge radius change\n",
    "                \n",
    "                if np.sign(dr) != np.sign(old_dr[nW]) :  #are we yoyoing? How many times?\n",
    "                    yoyoCount[nW] += 1\n",
    "                if yoyoCount[nW] > 3 and yoyoCount[nW] <= 6 :\n",
    "                    wedgeMaxR[nW] = max(wedgeMaxR[nW],currentR[nW]) #will track largest R in yoyo cycle\n",
    "                    max_dr[nW] = 2.*wedgeMaxR[nW]  #this will now store a reasonable max bisection step size\n",
    "                if yoyoCount[nW] > 6 :  #switch to bisection method; too many yo-yo's\n",
    "                    print(yoyoCount[nW],\"yoyos for tract,wedge,wedgePop,r=\",t,nW,wedgePop[nW],round(currentR[nW],4) )\n",
    "                    max_dr[nW] = 0.5 * max_dr[nW] #we are now bisecting ...\n",
    "                    if(neededWedgePop < 0):\n",
    "                        dr = max(-1.*max_dr[nW], -0.5*currentR[nW])  #reduce wedge size\n",
    "                    else:\n",
    "                        dr = max_dr[nW]  #increase wedge size\n",
    "                old_dr[nW] = dr  #these three lines -- save current as old values for next loop\n",
    "                oldR[nW] = currentR[nW]\n",
    "                oldWedgePop[nW] = wedgePop[nW]\n",
    "                if dr > 0. :  #we are growing a wedge piece \n",
    "                    outerR = currentR[nW] + dr\n",
    "                    innerR = currentR[nW]\n",
    "                    currentR[nW] = outerR    #for next loop around\n",
    "                else:    #this wedge piece will be SUBTRACTED from current wedge\n",
    "                    outerR = currentR[nW]\n",
    "                    innerR = currentR[nW] + dr  #remember, dr is negative here\n",
    "                    currentR[nW] = innerR             #for next loop around\n",
    "                #now, describe the new wedge to probe for precinct intersections ...\n",
    "                pt1[nW] = Point(tractCP.x+innerR*math.cos(angle[nW]), tractCP.y+innerR*math.sin(angle[nW]) )\n",
    "                pt2[nW] = Point(tractCP.x+outerR*math.cos(angle[nW]), tractCP.y+outerR*math.sin(angle[nW]) )\n",
    "                pt3[nW] = Point(tractCP.x+outerR*math.cos(angle2[nW]),tractCP.y+outerR*math.sin(angle2[nW]) )\n",
    "                pt4[nW] = Point(tractCP.x+innerR*math.cos(angle2[nW]),tractCP.y+innerR*math.sin(angle2[nW]) )\n",
    "                wedgePoly = Polygon([pt1[nW], pt2[nW], pt3[nW],pt4[nW]])  #true for wedge add-on or to-be-trimmed\n",
    "                \n",
    "                printPoly[nW] = wedgePoly  #for debugging\n",
    "                latestWedgePop = 0.  #for the new piece, not the entire triangle\n",
    "                usedTract = [0]*nTracts  #rezero lists of tracts and precincts that could straddle multiple grids\n",
    "                usedPrecinct = [0]*nPrecincts\n",
    "                for nG in range(nGrids) :  # loop over ACTIVE grids to look for intersecting tracts\n",
    "                    gridIntersxn = gridGeom[nG].intersection(wedgePoly)\n",
    "                    if (gridIntersxn.area > 0) :  #this grid is RELEVANT to this wedge\n",
    "                        for tt in range(nGridTracts[nG]) : #look for intersxns with all tracts in this grid\n",
    "                            nTT = gridTractNo[nG][tt] #shorthand for this tract's global tract no\n",
    "                            if(usedTract[nTT] == 0) :  #Did we not already look at this tract in another grid list?\n",
    "                                usedTract[nTT] = 1  #well, now we have!  Probe intersection with wedge\n",
    "                                overlap = tractGeom[nTT].intersection(wedgePoly).area\n",
    "                                if overlap > 0 :\n",
    "                                    fracArea = overlap/tractArea[nTT]\n",
    "                                    latestWedgePop  += fracArea*tractPop[nTT]  #always positive (used in density calc)\n",
    "                                    loopTractUse[nTT] += np.sign(dr)*overlap/tractArea[nTT] * tractPop[t]/avgDistrictPop\n",
    "                        # found all possible tract overlaps with this increment / decrement to this wedge.\n",
    "                        \n",
    "                wedgePop[nW] += np.sign(dr)*latestWedgePop  #for full triangle, based on this latest piece\n",
    "                # Now, flag if we're beyond boundary\n",
    "                if wedgePop[nW] < targetWedgePop : #wedge growth is doomed if we're beyond buffered boundary\n",
    "                    leadingEdge = LineString([pt2[nW],pt3[nW]])\n",
    "                    if leadingEdge.intersects(MAP) :  #still room to grow in part of edge, keep going\n",
    "                        gerrymandering = \"evil\"  #it had to be said\n",
    "                    else:  #thiswedge is fully beyond the map. give up on more map intersection\n",
    "                        isOverEdge[nW] = 1\n",
    "                        shortedWedge = nW  #ID'ing highest numbered wedge that got shorted by the boundary in this loop\n",
    "                        wedgePopGap[nW] = avgDistrictPop/nWedges - wedgePop[nW]  #how far this wedge's pop is below its target\n",
    "                        nActiveWedges -= 1\n",
    "                        sumPartialWedgePops += wedgePop[nW]\n",
    "                        max_dr = [globalMax_dr]*nWedges   #allow other wedges to take big steps again to catch up\n",
    "                        yoyoCount = [0] * nWedges  #go back to original gains on ALL active wedges\n",
    "                        if (nActiveWedges == 0) : #we're doomed, somehow all wedges are short and off map\n",
    "                            print(\"PUNT! no more active wedges for tract, loop =\",t,tractLoopCounter[t] )\n",
    "                            tractLoopCounter[t] = nGiveUp + 1  #PUNT !!!\n",
    "                        \n",
    "        # end of nW loop to adjust all wedge populations by growing or trimming wedges, IDing over-edge wedges\n",
    "        tractLoopCounter[t] +=1   # still looping on home district Pop\n",
    "        targetWedgePop = (avgDistrictPop - sumPartialWedgePops )/nActiveWedges  #active wedges to pick up any slack\n",
    "        # *** NEW 1/19/22 CODE TO ADJUST WEDGE ANGLES WHEN A BOUNDARY ENCOUNTERED\n",
    "        if (nActiveWedges == nWedges or nActiveWedges < nWedges - 2\n",
    "           or didWeRestart[t] == 1) :  #0 or 3+ over-boundary short wedges, or we've already adjusted wedge angles once\n",
    "            HDpop = np.sum(wedgePop) #Keep going with normal wedge growth and trim process\n",
    "        else :  # 1 OR 2 SHORTED WEDGES.  MAY WANT TO ALTER WEDGE ANGLES\n",
    "            didWeRestart[t] = 1  #to ensure we adjust wedge angles at most once per tract\n",
    "            if (nActiveWedges == nWedges - 2) :  #exactly two wedges got shorted in this loop -- are they opposing?\n",
    "                oppW = int( (shortedWedge + nWedges/2) % nWedges)  #the index of wedge opposite the last shorted wedge\n",
    "                if (isOverEdge[oppW] == 0) :\n",
    "                    print(\"we have 2 non-opposing shorted wedges for tract no\",t)\n",
    "                    totalLiveAngle = 2.*pi - np.sum(isOverEdge)*avgWedgeAngle  #avail angle to divvy among live wedges  \n",
    "                    for nW in range (nWedges) : #Decrease wedge angles opposite shorted wedges via a complex weighting\n",
    "                        if isOverEdge[nW] == 0 :\n",
    "                            oppW = int( (nW + nWedges/2) % nWedges) \n",
    "                            angleWeight = (np.sum(wedgePopGap)-wedgePopGap[oppW])/np.sum(wedgePopGap)/(nActiveWedges-1)\n",
    "                            wedgeAngle[nW] = angleWeight * totalLiveAngle  \n",
    "                else : #shorted wedges ARE opposing\n",
    "                    print(\"we have 2 OPPOSING shorted wedges for tract no\",t) # no wedge-angle adjustment in this case\n",
    "                    wedgeAngle=[avgWedgeAngle]*nWedges\n",
    "            else: # a single shorted wedge (over boundary).  Completely re-start wedge growth process\n",
    "                shortW = shortedWedge #Next dozen lines: convoluted code to find angle to closest boundary point\n",
    "                #print(\"1 wedge over map boundary for tract\",t,\"at loop, wedgePop\",tractLoopCounter[t],wedgePop[shortW] )\n",
    "                shortedPoly = Polygon([tractCP, pt2[shortW],pt3[shortW] ])\n",
    "                MAPedge = shortedPoly.intersection(MAP.exterior) #true state boundary line where wedge crossed it\n",
    "                minDistance = max(tractCP.distance(MAPedge),tinyR)  #closest distance to edge where wedge hit the boundary\n",
    "                edgeCircle = tractCP.buffer(1.01*minDistance)  #build a circle a little bigger than this distance\n",
    "                #  1.001 is not big enough; will occasionally not intersect\n",
    "                closeArea = edgeCircle.intersection(MAPedge)\n",
    "                counter = 0.\n",
    "                maxCounter = 10. #give up after 10 tries\n",
    "                while closeArea.is_empty :  # protect against missing the map boundary somehow\n",
    "                    print(\"need to widen edge circle beyond\",minDistance, \"for tract (x,y)=(\",tractCP.x,tractCP.y)\n",
    "                    minDistance = minDistance * 1.1\n",
    "                    edgeCircle = tractCP.buffer(minDistance)  #widen the circle\n",
    "                    closeArea = edgeCircle.intersection(MAPedge)\n",
    "                    counter += 1\n",
    "                    if counter >= maxCounter: #not finding map edge intersection.  Try another way\n",
    "                        print(\"did not find boundary with circle approach.  Brute-force it.\")\n",
    "                        minDistance = tractCP.distance(MAP.exterior)\n",
    "                        edgeCircle = tractCP.buffer(1.01*minDistance)\n",
    "                        closeArea = edgeCircle.intersection(MAP.exterior)                        \n",
    "            \n",
    "                closePoint = closeArea.centroid  # this is a point very close to the closest beeline from tract to map edge\n",
    "                #print(closePoint,tractCP, \"are boundary point and tract center point\")\n",
    "                x1 = closePoint.x\n",
    "                x2 = tractCP.x  #debugging\n",
    "                dx = closePoint.x - tractCP.x\n",
    "                dy = closePoint.y - tractCP.y\n",
    "                exitAngle = pi/2. * np.sign(dy)  #default in case dx=0\n",
    "                if (dx != 0 ):\n",
    "                    exitAngle = math.atan(dy/dx)  #this is the angle from the x-axis to the exit beeline\n",
    "                    if dx < 0 :  #use complementary atan solution; boundary is west of tract centroid\n",
    "                        exitAngle = pi + exitAngle\n",
    "                startAngle = exitAngle #                \n",
    "                # New 1/23/22 - let's estimate wedgePopGap at ideal orientation   # *********************\n",
    "                wedgeAngle1 = exitAngle - 0.5*avgWedgeAngle\n",
    "                wedgeAngle2 = exitAngle + 0.5*avgWedgeAngle\n",
    "                maxR = max(stateWidth,stateHeight) #ensuring we make a big enough wedge\n",
    "                wedgePt1 = tractCP\n",
    "                wedgePt2 = Point(tractCP.x+maxR*math.cos(wedgeAngle1),  tractCP.y+maxR*math.sin(wedgeAngle1) )\n",
    "                wedgePt3 = Point(tractCP.x+maxR*math.cos(wedgeAngle2), tractCP.y+maxR*math.sin(wedgeAngle2) )\n",
    "                wedgePoly = Polygon([ wedgePt1, wedgePt2, wedgePt3 ])\n",
    "                minWedgePop[t] = 0.\n",
    "                usedTract = [0]*nTracts  #rezero lists of tracts and precincts that could straddle multiple grids\n",
    "                for nG in range(nGrids) :  # loop over ACTIVE grids to look for intersecting tracts\n",
    "                    gridIntersxn = gridGeom[nG].intersection(wedgePoly)\n",
    "                    if (gridIntersxn.area > 0) :  #this grid is RELEVANT to this wedge\n",
    "                        for tt in range(nGridTracts[nG]) : #look for intersxns with all tracts in this grid\n",
    "                            nTT = gridTractNo[nG][tt] #shorthand for this tract's global tract no\n",
    "                            if(usedTract[nTT] == 0) :  #Did we not already look at this tract in another grid list?\n",
    "                                usedTract[nTT] = 1  #well, now we have!  Probe intersection with wedge\n",
    "                                overlap = tractGeom[nTT].intersection(wedgePoly).area\n",
    "                                if overlap > 0 :\n",
    "                                    fracArea = overlap/tractArea[nTT]\n",
    "                                    minWedgePop[t]  += fracArea*tractPop[nTT]  #always positive (used in density calc)\n",
    "                #print(\"the minimum shorted Wedge Pop for tract {0} is {1}\".format(t,minWedgePop[t]) )  #debug\n",
    "                printAngle[t] = round(exitAngle*180./pi,4) #for debugging\n",
    "                printDist = round(minDistance,4)\n",
    "                #print(t,\"(\",tractCP.x,tractCP.y,\")\",printAngle,printDist,\"t,tract(x,y),exitAngle,dist\")\n",
    "                # ********************************************************************\n",
    "                # assign new wedge angles.  The two wide angles face toward and away from nearest boundary\n",
    "                #ratio = wedgePopGap[shortW]/ (avgDistrictPop/nWedges)  #0-1; this is degree of shortness\n",
    "                ratio = 1. - minWedgePop[t]/ (avgDistrictPop/nWedges)  # *** UPDATED\n",
    "                # printWedgePopGap[t] = wedgePopGap[shortW]\n",
    "                wideAngle = (1. + coeff1 * ratio + coeff2 * ratio*ratio)*avgWedgeAngle #HERE, WE ADJUST ANGLES\n",
    "                wideAngle = min(wideAngle, maxWideAngle*pi) #set an upper limit\n",
    "                thinAngle = (2.*pi - 2.*wideAngle)/(nWedges - 2.)  #other wedges equally angle-compressed\n",
    "                #if (t % 9 == 0):  #occasional print\n",
    "                    #print(\"tract,wide, thin angles are \",t,round(180/pi*wideAngle,4),round(180/pi*thinAngle,4) )\n",
    "                for nW in range(nWedges) :\n",
    "                    if (nW == 0 or nW == int(nWedges/2) ) : #assign these two as shorted wedge and its opposite\n",
    "                        wedgeAngle[nW] = wideAngle\n",
    "                    else :\n",
    "                        wedgeAngle[nW] = thinAngle\n",
    "                #** COMPLETELY RESTART WEDGE GROWTH PROCESS FROM INITIAL PIZZA SLICES, NOW RE-ORIENTED\n",
    "                loopTractUse = [0.] * nTracts  # reset as we are starting over\n",
    "                loopPrecinctUse = [0.]* nPrecincts\n",
    "                HDpop = 0.\n",
    "                sumPartialWedgePops = 0. \n",
    "                nActiveWedges = nWedges\n",
    "                targetWedgePop = avgDistrictPop / nWedges  #at beginning, all wedges are active\n",
    "                #latestWedgeDensity = [0.]*nWedges\n",
    "                oldR = [0.]*nWedges   #for remembering last loop's wedge radius  \n",
    "                currentR = [tinyR]*nWedges                \n",
    "                old_dr = [tinyR]*nWedges  #this will track the last radial step (to help convergence)\n",
    "                max_dr = [globalMax_dr]*nWedges  #reset max step size\n",
    "                wedgePop = [0.]*nWedges\n",
    "                oldWedgePop = [0.]*nWedges #wedge pop from previous round\n",
    "                wedgePopGap = [0.]*nWedges\n",
    "                isOverEdge = [0] *nWedges\n",
    "                isSatisfied = [0] *nWedges\n",
    "                yoyoCount = [0] *nWedges #just in case we missed this earlier\n",
    "                wedgeMaxR = [0.] * nWedges #resetting\n",
    "                angle[0] = startAngle - 0.5*wideAngle  #the 0th wedge always faces the boundary\n",
    "                angle2[0] = angle[0] + wedgeAngle[0]\n",
    "                for nW in range(nWedges) :\n",
    "                    if (nW == 0):\n",
    "                        angle[nW] = startAngle - 0.5*wideAngle  #the 0th wedge always faces the boundary\n",
    "                    else :\n",
    "                        angle[nW] = angle2[nW-1]\n",
    "                    angle2[nW] = angle[nW]+wedgeAngle[nW]      \n",
    "                    pt1[nW] = tractCP\n",
    "                    pt2[nW] = Point(tractCP.x+tinyR*math.cos(angle[nW]),  tractCP.y+tinyR*math.sin(angle[nW]) )\n",
    "                    pt3[nW] = Point(tractCP.x+tinyR*math.cos(angle2[nW]), tractCP.y+tinyR*math.sin(angle2[nW]) )\n",
    "                    wedgePoly = Polygon([pt1[nW], pt2[nW], pt3[nW] ])\n",
    "                    wedgePop[nW] = tractPop[t]* wedgePoly.area/max(tractArea[t],minTractArea)\n",
    "                    #latestWedgeDensity[nW] = 2. * tractPop[t] / tractArea[t]   #the \"2\" is a white lie for stability\n",
    "                HDpop = np.sum(wedgePop)   #** END OF RESTART BLOCK.  RE-ENTER MAIN LOOP FOR THIS TRACT\n",
    "                      \n",
    "        # **** BELOW IS TO CORRECT FOR NONCONVERGENCE *****\n",
    "        if (tractLoopCounter[t] > nLoopPrint):  #may be becoming unstable. Alert user,    #and (don't) reduce gain\n",
    "            strPop = str(round(HDpop,2))\n",
    "            strWdg = \"Overedge?\"\n",
    "            strSat = \"Satisfied?\"\n",
    "            strYoyo = \"yoyo?\"\n",
    "            strTWP_dr = \"   \"+str(round(targetWedgePop,1) )\n",
    "            for nWW in range(nWedges) :\n",
    "                strPop = strPop + \", \"+str(round(wedgePop[nWW],1) )\n",
    "                strWdg = strWdg +str(isOverEdge[nWW])+\", \"\n",
    "                strSat = strSat +str(isSatisfied[nWW])\n",
    "                strYoyo = strYoyo + str(yoyoCount[nWW])\n",
    "                strTWP_dr = strTWP_dr + \", \"+str(round(old_dr[nWW],3) )\n",
    "            print(\"loop{0}, tr{1},wedgePops{2}, {3},{4},{5} \".format(tractLoopCounter[t],t,strPop,strWdg,strSat,strYoyo) )\n",
    "            print(\"   targetWP, latest drx4 are\",strTWP_dr)\n",
    "\n",
    "        if (tractLoopCounter[t] > nLoopSuperPrint) :\n",
    "            for nWW in range(nWedges):                \n",
    "                print(\"wedge no, currentR,oldWedgePop, wedgePop, overEdge?\",nWW,str(round(currentR[nWW],5)), \n",
    "                      str(round(oldWedgePop[nWW],4)), str(round(wedgePop[nWW],4)),isOverEdge[nWW])   #debug\n",
    "                x, y = printPoly[nWW].exterior.xy     #wedge debugging .....\n",
    "                plt.plot(x, y, c=(0.1, 0.2, 0.02+float(nWW)/nWedges) )\n",
    "            plt.show()\n",
    "        if(tractLoopCounter[t] >= nGiveUp):\n",
    "            print(\"I looped {0} times on tract {1}, giving up w pop {2}\".format(nGiveUp,t,HDpop) )\n",
    "            wrongPop[t] = HDpop  #this will flag this HD as triaged\n",
    "            HDpop = avgDistrictPop  #white lie to kick out of loop\n",
    "        # *** END OF TRIAGE FOR NONCONVERGENCE\n",
    "        \n",
    "    # END OF WHILE LOOP --> we are within tolerance of avgDistrictPop. Finalize this tract's Home District stats\n",
    "    for nTT in range (nTracts) :\n",
    "        tractUse[nTT] += loopTractUse[nTT]\n",
    "    totGOP = 0.\n",
    "    totVote = 0.\n",
    "    totVAP = 0.\n",
    "    totHisp = 0.\n",
    "    totBlack = 0.  #zero these out prior to summing over final wedges\n",
    "    usedTract = [0]*nTracts  #rezero lists of tracts and precincts that could straddle multiple grids\n",
    "    usedPrecinct = [0]*nPrecincts\n",
    "\n",
    "    if (tractPop[t] < minTractPop or tractArea[t] == 0 or isSkippedTract[t] == 1): \n",
    "        #we bypassed the big loop; this tract is inconsequential\n",
    "        HDvPop[t] = HDpop  #a white lie\n",
    "        HDweight[t] = 0.000001  #to suppress this in total stats\n",
    "    else :\n",
    "        HDvPop[t] = np.sum(wedgePop)\n",
    "        # HDvHisp[t] = np.sum(wedgeHisp)/np.sum(wedgePop)  #3/2/22 - move to final wedge calcs\n",
    "        # HDvBlack[t] = np.sum(wedgeBlack)/np.sum(wedgePop)  #3/2/22 - move to final wedge calcs\n",
    "        HDweight[t] = tractPop[t]/np.sum(tractPop)\n",
    "        nearEdge[t] = nWedges - nActiveWedges  #flagging the number of wedges that were not completely pop-filled\n",
    "        centerPt = tractCP\n",
    "        outerPt2 = Point(tractCP.x+currentR[0]*math.cos(angle[0]), tractCP.y+currentR[0]*math.sin(angle[0]) )\n",
    "        outerPt3 = Point(tractCP.x+currentR[0]*math.cos(angle2[0]),tractCP.y+currentR[0]*math.sin(angle2[0]) )\n",
    "        HDpolly = Polygon([centerPt,outerPt2,outerPt3])   #initiate a polygon that will be the home district\n",
    "        for nW in range(1,nWedges):\n",
    "            cR = currentR[nW] #shorthand\n",
    "            outerPt2 = Point(tractCP.x+cR*math.cos(angle[nW]), tractCP.y+cR*math.sin(angle[nW]) )\n",
    "            outerPt3 = Point(tractCP.x+cR*math.cos(angle2[nW]),tractCP.y+cR*math.sin(angle2[nW]) )\n",
    "            HDpolly =  HDpolly.union( Polygon([centerPt,outerPt2,outerPt3]) )  #add this wedge to HD district polygon\n",
    "        HDpolly = HDpolly.intersection(MAP)  #exclude map's convex hull and buffer, just the original union of precincts\n",
    "        HDarea[t] = HDpolly.area  #for stats, final Home District area\n",
    "        for nG in range(nGrids) :  # ID the ACTIVE grids to look for intersecting precincts\n",
    "            gridIntersxn = gridGeom[nG].intersection(HDpolly)\n",
    "            if (gridIntersxn.area > 0) :  #this grid is RELEVANT to the final Home District\n",
    "                for tt in range(nGridTracts[nG]):\n",
    "                    nTT = gridTractNo[nG][tt]\n",
    "                    if usedTract[nTT] == 0: #only examine tracts that have not already been called for intersection\n",
    "                        usedTract[nTT] == 1  #this tract has now been called \n",
    "                        overlap = tractGeom[nTT].intersection(HDpolly).area\n",
    "                        if overlap > 0 :\n",
    "                            fracArea = overlap/tractArea[nTT]\n",
    "                            totVAP += fracArea*tractVAP[nTT]\n",
    "                            totHisp += fracArea*tractHisp[nTT]\n",
    "                            totBlack += fracArea*tractBlack[nTT]\n",
    "                        \n",
    "                for pp in range(nGridPrecincts[nG]): #scanning the list of precincts in this active grid\n",
    "                    nPP = gridPrecinctNo[nG][pp]\n",
    "                    if usedPrecinct[nPP] == 0  :\n",
    "                        usedPrecinct[nPP] = 1  #don't double up on precinct intersection\n",
    "                        overlap = vtdGeom[nPP].intersection(HDpolly).area\n",
    "                        if overlap > 0 :\n",
    "                            fracArea = overlap/vtdArea[nPP]\n",
    "                            totGOP += fracArea*vtdGOP[nPP]*vtdPop[nPP]\n",
    "                            totVote += fracArea*vtdPop[nPP]\n",
    "                            loopPrecinctUse[nPP] += overlap/vtdArea[nPP] *tractPop[t]/avgDistrictPop\n",
    "        HDvHisp[t] = totHisp/totVAP\n",
    "        HDvBlack[t] = totBlack/totVAP\n",
    "        HDvGOP[t] = totGOP / totVote\n",
    "        for nPP in range (nPrecincts) :\n",
    "            precinctUse[nPP] += loopPrecinctUse[nPP] #add to global use for this precinct\n",
    "\n",
    "    # end of loop on this tract\n",
    "for t in range(nTracts):\n",
    "    if(wrongPop[t] > 0):\n",
    "        HDvPop[t] = wrongPop[t]  #undo the lie that got us out of the loop early\n",
    "HDsumWeight = np.sum(HDweight)\n",
    "print(\"Sum of weights over all precinct home districts should have been 1.000, but was \",HDsumWeight)\n",
    "print(\"Average and max number of wedgePop loops per tract were: \",np.average(tractLoopCounter),np.max(tractLoopCounter) )\n",
    "print(\"min,average,max of Home District areas were: \",np.min(HDarea),np.average(HDarea),np.max(HDarea) )\n",
    "stateGOP2 = 0.\n",
    "stateHisp2 = 0.\n",
    "stateBlack2 = 0.\n",
    "for t in range(nTracts):\n",
    "    HDweight[t] = HDweight[t]/HDsumWeight   #renormalizing\n",
    "    stateGOP2 += HDweight[t]*HDvGOP[t]\n",
    "    stateBlack2 += HDweight[t]*HDvBlack[t]\n",
    "    stateHisp2 += HDweight[t]*HDvHisp[t]\n",
    "statePop = np.sum(tractPop)\n",
    "print(\"calculated statewide vote was {0}, should have been {1}\".format(stateGOP2, stateGOP) )\n",
    "print(\"calcd statewide Hispanic pop was {0}, should have been {1}\".format(stateHisp2, np.sum(tractHisp)/statePop ) )\n",
    "print(\"calcd statewide Black pop was {0}, should have been {1}\".format(stateBlack2, np.sum(tractBlack)/statePop ) )\n",
    "print(\"fraction of HDs that with altered wedge angles near boundaries = \",np.sum(didWeRestart)/nTracts)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "id": "24a347a9-8220-4c1a-bcfc-14923f1f98f7",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Sum of weights over all precinct home districs should have been 1.000, but was  1.0000074412113245\n",
      "Average and max number of wedgePop loops per tract were:  9.071181755355909 37.0\n",
      "min,average,max of Home District areas were:  0.0 4.03099811135283 14.964982191895952 for  CO\n"
     ]
    }
   ],
   "source": [
    "#use this line to document progress\n",
    "# start CO 10:34, end 11:29\n",
    "print(\"Sum of weights over all precinct home districs should have been 1.000, but was \",HDsumWeight)\n",
    "print(\"Average and max number of wedgePop loops per tract were: \",np.average(tractLoopCounter),np.max(tractLoopCounter) )\n",
    "print(\"min,average,max of Home District areas were: \",np.min(HDarea),np.average(HDarea),np.max(HDarea),\"for \",STATE )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "id": "72247942-899a-4ab2-9796-239aa1e524fb",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "CO 03Mar\n"
     ]
    }
   ],
   "source": [
    "date = \"03Mar\"\n",
    "print(STATE, date)  #check that I will not overwrite existing file :-)\n",
    "tractCPx = [0.]*nTracts\n",
    "tractCPy = [0.]*nTracts\n",
    "tractNo = [0.]*nTracts\n",
    "for t in range(nTracts):\n",
    "    tractCPx[t]=tractGeom[t].centroid.x\n",
    "    tractCPy[t]=tractGeom[t].centroid.y\n",
    "    tractNo[t]=t"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "id": "c55ac5fd-7402-47b9-9093-10b9fe0912b6",
   "metadata": {},
   "outputs": [],
   "source": [
    "#LET'S WRITE AN OUTPUT FILE BEFORE WE FORGET :-)\n",
    "# now convert output to pandas dataframe and export\n",
    "\n",
    "paramList = [\"STATE\",\"stateGOP\",\"nDistricts\",\"nTracts\",\"nPrecincts\",\"nWedges\",\"popn-toler\"]\n",
    "paramValues = [STATE,stateGOP, nDistricts, nTracts,nPrecincts,nWedges, toler]\n",
    "for i in range(nTracts-len(paramList)):\n",
    "    paramList.append(\".\")\n",
    "    paramValues.append(-99)\n",
    "df = pd.DataFrame( {\"paramList\": paramList,\"paramValues\":paramValues,\"HD-pop\":HDvPop,\"HDvGOP\":HDvGOP,\"HDvHisp\":HDvHisp,\n",
    "                    \"HDvBlack\":HDvBlack,\"HDwt\":HDweight,\"HDarea\":HDarea, \"tractNo\":tractNo,\"Loops\":tractLoopCounter,\n",
    "                    \"tractPop\":tractPop,\"tractHisp\":tractHisp,\"tractBlack\":tractBlack,\"centroid x\":tractCPx,\n",
    "                    \"centroid y\":tractCPy, \"tractUse\":tractUse,\"nearEdge\":nearEdge,\"wrongPop\":wrongPop,\n",
    "                    \"Restart?\":didWeRestart} ) \n",
    "\n",
    "outname = STATE+\"Eul\"+str(nDistricts)+\"tol\"+str(toler)+\"nW\"+str(nWedges)+date+\".csv\"\n",
    "outpath = \"state_HD_output/\"+outname\n",
    "df.to_csv(outpath)\n",
    "precinctNo = [0.]*nPrecincts\n",
    "vtdX = [0.]*nPrecincts\n",
    "vtdY = [0.]*nPrecincts\n",
    "for p in range(nPrecincts):\n",
    "    precinctNo[p]=p\n",
    "    vtdX[p] = vtdGeom[p].centroid.x\n",
    "    vtdY[p] = vtdGeom[p].centroid.y\n",
    "df2 = pd.DataFrame( {\"precinctNo\":precinctNo,\"precinctPop\":vtdPop,\"precUse\":precinctUse, \"vtdX\":vtdX, \"vtdY\":vtdY} )\n",
    "outname2 = STATE+\"_VTD_tol\"+str(toler)+\"nW\"+str(nWedges)+\".csv\"\n",
    "outpath = \"state_HD_output/\"+outname2\n",
    "df2.to_csv(outpath)  #currently, I'm outputting the precinct use stats to a separate file."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "id": "c4449da0-47a9-40cc-a585-8288447290e6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "we will redo tract numbers  [0]\n"
     ]
    }
   ],
   "source": [
    "# Looking for nonconvergers ...  Run even if none observed, just to check  \n",
    "redo = [0]\n",
    "counter = 0.\n",
    "for t in range (nTracts) :\n",
    "    if wrongPop[t] > 0 :\n",
    "        ratio = round(wrongPop[t]/avgDistrictPop,2)\n",
    "        tractX = tractGeom[t].centroid.x\n",
    "        tractY = tractGeom[t].centroid.y        \n",
    "        print(t, ratio,\"(\",tractX,tractY,\")\",HDvGOP[t], \"t, pop/target,(x,y), pctR\")\n",
    "        if (ratio < 0.9 or ratio > 1.1) :  #these we will redo\n",
    "            plt.text(tractGeom[t].centroid.x, tractGeom[t].centroid.y,ratio, fontsize=14)\n",
    "            if counter == 0 :  #first redo\n",
    "                redo = [t]\n",
    "            else :\n",
    "                redo.append(t)\n",
    "            counter+= 1\n",
    "        else: #show these milder offenders on the map in a smaller font            \n",
    "            plt.text(tractGeom[t].centroid.x, tractGeom[t].centroid.y,ratio, fontsize=9)\n",
    "\n",
    "x,y = tractMAP.exterior.xy\n",
    "plt.plot(x,y,c=\"purple\")\n",
    "plt.show()\n",
    "print(\"we will redo tract numbers \",redo)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "id": "be6e965b-4ca8-4af2-8031-63132fbb939d",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "211 0.7924735753654957 928 pop,GOP 0.3448275862068966\n",
      "294 0.7582676812873107 1534 pop,GOP 0.4002607561929596\n",
      "319 0.74953555321464 1311 pop,GOP 0.37833714721586575\n",
      "354 0.7803030674019887 1452 pop,GOP 0.37327823691460055\n",
      "376 0.7609386211230275 1460 pop,GOP 0.4178082191780822\n",
      "385 0.7667475076902219 1162 pop,GOP 0.4259896729776248\n",
      "386 0.7968781220975544 1059 pop,GOP 0.4475920679886686\n",
      "407 0.7715572451204484 1045 pop,GOP 0.4430622009569378\n",
      "410 0.7043334604038637 730 pop,GOP 0.43424657534246575\n",
      "429 0.7954295849771457 1562 pop,GOP 0.5672215108834827\n",
      "476 0.7226344251472858 943 pop,GOP 0.4485683987274655\n",
      "477 0.734373850893597 1105 pop,GOP 0.4\n",
      "478 0.7248064247986117 836 pop,GOP 0.41148325358851673\n",
      "479 0.7866561896902327 815 pop,GOP 0.38773006134969323\n",
      "484 0.7253744722677479 262 pop,GOP 0.5801526717557252\n",
      "485 0.703664895410294 1111 pop,GOP 0.40684068406840684\n",
      "486 0.7019357852996406 860 pop,GOP 0.45813953488372094\n",
      "488 0.7126089960983034 1050 pop,GOP 0.44857142857142857\n",
      "489 0.6947198739291519 1167 pop,GOP 0.4361610968294773\n",
      "506 0.7247619690892585 1192 pop,GOP 0.4521812080536913\n",
      "508 0.7303233186091026 1510 pop,GOP 0.4814569536423841\n",
      "509 0.7129592644047895 1159 pop,GOP 0.3830888697152718\n",
      "511 0.7521787115369157 1371 pop,GOP 0.3727206418672502\n",
      "512 0.7369614573106887 825 pop,GOP 0.4109090909090909\n",
      "513 0.7290230445947571 1283 pop,GOP 0.4770070148090413\n",
      "516 0.7072051137960099 621 pop,GOP 0.48470209339774556\n",
      "517 0.7527318118200556 1142 pop,GOP 0.3957968476357268\n",
      "519 0.7252827812756029 1233 pop,GOP 0.4630981346309814\n",
      "520 0.7060463064532688 1585 pop,GOP 0.4580441640378549\n",
      "521 0.6933606451590398 1551 pop,GOP 0.4397163120567376\n",
      "522 0.7011840988613218 1400 pop,GOP 0.43357142857142855\n",
      "523 0.6959382752133462 1312 pop,GOP 0.43064024390243905\n",
      "524 0.7138073013149864 536 pop,GOP 0.3246268656716418\n",
      "525 0.7113072451205521 1636 pop,GOP 0.4779951100244499\n",
      "526 0.7321673633126592 1553 pop,GOP 0.42369607211848037\n",
      "527 0.7061750117985096 2344 pop,GOP 0.3937713310580205\n",
      "529 0.782375055393001 12 pop,GOP 0.8333333333333334\n",
      "531 0.7661108923149137 1565 pop,GOP 0.3501597444089457\n",
      "532 0.7695036317843136 1419 pop,GOP 0.41719520789288234\n",
      "538 0.7944058201555297 1446 pop,GOP 0.3029045643153527\n",
      "540 0.7274285984312443 1347 pop,GOP 0.42464736451373425\n",
      "541 0.7135942430591631 858 pop,GOP 0.49184149184149184\n",
      "542 0.7446399786320327 1116 pop,GOP 0.40860215053763443\n",
      "543 0.7514419917974865 865 pop,GOP 0.3861271676300578\n",
      "544 0.7176634537941607 995 pop,GOP 0.4402010050251256\n",
      "546 0.7393381422994657 3028 pop,GOP 0.43494055482166444\n",
      "547 0.7439062026799531 1559 pop,GOP 0.43361128928800513\n",
      "613 0.7619624847234236 1290 pop,GOP 0.5968992248062015\n",
      "616 0.7310776108315982 1265 pop,GOP 0.5209486166007905\n",
      "617 0.7306311392928221 1343 pop,GOP 0.46463142218912884\n",
      "618 0.7580169455093936 1988 pop,GOP 0.5301810865191147\n",
      "625 0.7998614299687404 712 pop,GOP 0.3890449438202247\n",
      "1123 0.7876665146078148 783 pop,GOP 0.194125159642401\n",
      "1125 0.7921935919222093 842 pop,GOP 0.171021377672209\n",
      "1129 0.7928054850663648 1725 pop,GOP 0.24811594202898551\n",
      "1131 0.7955181631417604 1364 pop,GOP 0.1906158357771261\n",
      "1132 0.7983821358406447 790 pop,GOP 0.15569620253164557\n",
      "1303 0.7903107281385593 913 pop,GOP 0.5991237677984665\n",
      "1355 0.7586774295382893 706 pop,GOP 0.6005665722379604\n",
      "1388 0.7817537923460616 995 pop,GOP 0.6793969849246231\n",
      "1389 0.7573976719244941 2495 pop,GOP 0.5302605210420842\n",
      "1395 0.7082556649661168 594 pop,GOP 0.18686868686868688\n",
      "1399 0.7929165258967762 213 pop,GOP 0.15023474178403756\n",
      "1401 0.7405732548909139 724 pop,GOP 0.4143646408839779\n",
      "1412 0.7427320918850912 1366 pop,GOP 0.3857979502196193\n",
      "1422 0.7606376762951532 1243 pop,GOP 0.3073209975864843\n",
      "1423 0.7356897047404526 1445 pop,GOP 0.12802768166089964\n",
      "1426 0.7586805538724359 1310 pop,GOP 0.26717557251908397\n",
      "1429 0.7034165049033805 1334 pop,GOP 0.5719640179910045\n",
      "1444 0.7161111879038298 775 pop,GOP 0.3638709677419355\n",
      "1448 0.7368180003726882 1279 pop,GOP 0.3127443315089914\n",
      "1449 0.7541743099371246 891 pop,GOP 0.2716049382716049\n",
      "1452 0.6441987460620945 1173 pop,GOP 0.35038363171355497\n",
      "1453 0.6889133425142174 916 pop,GOP 0.49563318777292575\n",
      "1457 0.6959460745134677 396 pop,GOP 0.3181818181818182\n",
      "1463 0.7738686910360165 1202 pop,GOP 0.37603993344425957\n",
      "1464 0.6673876997373924 1306 pop,GOP 0.23660030627871362\n",
      "1465 0.7566663387917344 352 pop,GOP 0.22443181818181818\n",
      "1466 0.7925774153885311 741 pop,GOP 0.2253711201079622\n",
      "1467 0.7755488000134518 1265 pop,GOP 0.3494071146245059\n",
      "1471 0.7712602919586721 775 pop,GOP 0.19225806451612903\n",
      "1486 0.7228165977671744 830 pop,GOP 0.3228915662650602\n",
      "1487 0.6342698852502703 1194 pop,GOP 0.2520938023450586\n",
      "1492 0.7133495066364134 1000 pop,GOP 0.386\n",
      "1495 0.6606925788713355 961 pop,GOP 0.21019771071800208\n",
      "1496 0.6393371368984512 776 pop,GOP 0.2422680412371134\n",
      "1497 0.6719416315834479 615 pop,GOP 0.23089430894308943\n",
      "1498 0.7159249565991262 1219 pop,GOP 0.20836751435602954\n",
      "1499 0.7846402337408401 1186 pop,GOP 0.28583473861720066\n",
      "1502 0.7099841701841111 941 pop,GOP 0.21891604675876727\n",
      "1503 0.6554242588557181 687 pop,GOP 0.2925764192139738\n",
      "1504 0.6722495343398004 820 pop,GOP 0.4560975609756098\n",
      "1506 0.6961706216933241 902 pop,GOP 0.5709534368070953\n",
      "1507 0.6835221046686218 1275 pop,GOP 0.6203921568627451\n",
      "1515 0.7178274958650919 1201 pop,GOP 0.27477102414654453\n",
      "1516 0.6937971189622608 1046 pop,GOP 0.24378585086042065\n",
      "1519 0.6828387326206798 1261 pop,GOP 0.42505947660586835\n",
      "1520 0.731908905400222 585 pop,GOP 0.17606837606837608\n",
      "1521 0.718360788782086 1518 pop,GOP 0.11923583662714098\n",
      "1522 0.7300024088180433 749 pop,GOP 0.22162883845126835\n",
      "1526 0.7900406371806998 1159 pop,GOP 0.17083692838654013\n",
      "1531 0.7829763239548801 642 pop,GOP 0.24766355140186916\n",
      "1532 0.7906274044795972 947 pop,GOP 0.529039070749736\n",
      "1533 0.6741807029515319 642 pop,GOP 0.4236760124610592\n",
      "1546 0.6836653503157901 1174 pop,GOP 0.1252129471890971\n",
      "1548 0.7424787037180964 804 pop,GOP 0.1828358208955224\n",
      "1549 0.6747283933096655 710 pop,GOP 0.27323943661971833\n",
      "1550 0.6804876707740491 1562 pop,GOP 0.5640204865556978\n",
      "1559 0.6828056007335352 747 pop,GOP 0.21954484605087016\n",
      "1560 0.7702739624895084 742 pop,GOP 0.192722371967655\n",
      "1566 0.7497348144126382 1006 pop,GOP 0.5636182902584493\n",
      "1567 0.7247098637155956 1121 pop,GOP 0.5691347011596789\n",
      "1568 0.7127539531681547 1326 pop,GOP 0.5927601809954751\n",
      "1588 0.7572722642064149 1220 pop,GOP 0.6893442622950819\n",
      "1632 0.7718790717640102 343 pop,GOP 0.8279883381924198\n",
      "1666 0.7870242427202357 583 pop,GOP 0.5283018867924528\n",
      "1710 0.7858068364438815 188 pop,GOP 0.7872340425531915\n",
      "1821 0.7847163763865572 887 pop,GOP 0.7812852311161218\n",
      "1861 0.7985424151369042 1439 pop,GOP 0.7567755385684504\n",
      "1872 0.7608075764120573 1384 pop,GOP 0.7926300578034682\n",
      "1891 0.7983096134544373 1003 pop,GOP 0.1674975074775673\n",
      "1892 0.7898641770236792 829 pop,GOP 0.16646562123039807\n",
      "1893 0.7923258478539794 307 pop,GOP 0.2182410423452769\n",
      "1900 0.7435636236192861 1430 pop,GOP 0.365034965034965\n",
      "1901 0.7208059434640086 1368 pop,GOP 0.6432748538011696\n",
      "1904 0.7576297177786766 976 pop,GOP 0.6711065573770492\n",
      "1905 0.5234286299747647 1945 pop,GOP 0.7105398457583547\n",
      "1906 0.5531732212643867 1907 pop,GOP 0.5317252228631358\n",
      "1907 0.5824916558516241 1758 pop,GOP 0.3395904436860068\n",
      "1908 0.5123992680687719 941 pop,GOP 0.4920297555791711\n",
      "1909 0.5249882128983738 1336 pop,GOP 0.5097305389221557\n",
      "1910 0.5667617739185936 1701 pop,GOP 0.606114050558495\n",
      "1911 0.601414005599379 1927 pop,GOP 0.5417747794499221\n",
      "1912 0.549924084372924 1463 pop,GOP 0.7272727272727273\n",
      "1913 0.726886148641975 1721 pop,GOP 0.6519465427077281\n",
      "1914 0.5024380758551819 818 pop,GOP 0.628361858190709\n",
      "1915 0.5077702735591807 1845 pop,GOP 0.6005420054200542\n",
      "1916 0.6031972056222615 2266 pop,GOP 0.6734333627537511\n",
      "1917 0.5912136822657215 1566 pop,GOP 0.5919540229885057\n",
      "1918 0.6653282285138414 1971 pop,GOP 0.6017250126839168\n",
      "1919 0.5291316015609678 1881 pop,GOP 0.6390217969165337\n",
      "1920 0.507631733237428 1276 pop,GOP 0.6755485893416928\n",
      "1921 0.6397812272961271 1741 pop,GOP 0.6145893164847789\n",
      "1922 0.6772115156633299 2251 pop,GOP 0.7081297201243891\n",
      "1923 0.5192619007900997 1400 pop,GOP 0.5357142857142857\n",
      "1924 0.5248343246114566 899 pop,GOP 0.6440489432703004\n",
      "1925 0.5216725604887547 1044 pop,GOP 0.6216475095785441\n",
      "1926 0.7803580240811999 861 pop,GOP 0.5156794425087108\n",
      "1927 0.5324650491962528 1428 pop,GOP 0.6785714285714286\n",
      "1928 0.5301507975463509 1365 pop,GOP 0.6717948717948717\n",
      "1929 0.6421361693386173 2330 pop,GOP 0.6446351931330472\n",
      "1930 0.601611234800452 1513 pop,GOP 0.6391275611368142\n",
      "1931 0.669134334597378 926 pop,GOP 0.6954643628509719\n",
      "1932 0.6641695934070273 1617 pop,GOP 0.645021645021645\n",
      "1933 0.7192535395867667 1214 pop,GOP 0.742998352553542\n",
      "1934 0.6917470753951832 1849 pop,GOP 0.6473769605191996\n",
      "1935 0.5359672217965477 2413 pop,GOP 0.5930377123912143\n",
      "1936 0.5713280013919805 1352 pop,GOP 0.6671597633136095\n",
      "1937 0.6955067474924803 1856 pop,GOP 0.6907327586206896\n",
      "1938 0.7086479144673945 1930 pop,GOP 0.6875647668393783\n",
      "1939 0.6457804665457514 1974 pop,GOP 0.5217831813576495\n",
      "1940 0.6211963549645757 2078 pop,GOP 0.43214629451395575\n",
      "1941 0.5829167483150617 1742 pop,GOP 0.4460390355912744\n",
      "1942 0.7401071300253069 1975 pop,GOP 0.7002531645569621\n",
      "1943 0.7234582537100818 1924 pop,GOP 0.6694386694386695\n",
      "1944 0.7563067850464645 1726 pop,GOP 0.6517960602549246\n",
      "1945 0.6933863672294215 1656 pop,GOP 0.6509661835748792\n",
      "1946 0.7111516362395387 1754 pop,GOP 0.7400228050171037\n",
      "1947 0.7096425826338798 1535 pop,GOP 0.6762214983713355\n",
      "1948 0.7395064891146498 1824 pop,GOP 0.7127192982456141\n",
      "1949 0.7156140903589451 1983 pop,GOP 0.6923852748361069\n",
      "1950 0.6480601728931796 1964 pop,GOP 0.6476578411405295\n",
      "1951 0.562538452817031 1576 pop,GOP 0.7601522842639594\n",
      "1952 0.7061169126632187 1295 pop,GOP 0.7922779922779922\n",
      "1953 0.7990244660737733 879 pop,GOP 0.7428896473265074\n",
      "1955 0.7555783807198229 483 pop,GOP 0.8178053830227743\n",
      "1956 0.598896714409977 1837 pop,GOP 0.8072945019052804\n",
      "1957 0.528423981154143 1587 pop,GOP 0.6969124133585382\n",
      "1958 0.7049511434232659 179 pop,GOP 0.7541899441340782\n",
      "1959 0.5772858811537371 1593 pop,GOP 0.8468298807281858\n",
      "1960 0.524665801408208 927 pop,GOP 0.6558791801510249\n",
      "1982 0.7890293380098674 150 pop,GOP 0.86\n",
      "2069 0.7564552093910346 247 pop,GOP 0.2388663967611336\n",
      "2070 0.6512586693544413 299 pop,GOP 0.8494983277591973\n",
      "2071 0.6404684272622113 348 pop,GOP 0.8649425287356322\n",
      "2072 0.6459748496838983 536 pop,GOP 0.8861940298507462\n",
      "2161 0.6844648767264905 38 pop,GOP 0.8157894736842105\n",
      "2162 0.6524805366105688 203 pop,GOP 0.7980295566502463\n",
      "2167 0.7896941056807402 210 pop,GOP 0.9238095238095239\n",
      "2171 0.6374171275928885 430 pop,GOP 0.8325581395348837\n",
      "2172 0.7481963583453044 2144 pop,GOP 0.5405783582089553\n",
      "2173 0.6440001547570178 1626 pop,GOP 0.7306273062730627\n",
      "2174 0.7021779192241427 945 pop,GOP 0.6751322751322751\n",
      "2175 0.6450213600335956 1317 pop,GOP 0.5725132877752468\n",
      "2176 0.7245328180997224 2263 pop,GOP 0.46486964206805126\n",
      "2177 0.6235072360226863 1788 pop,GOP 0.7080536912751678\n",
      "2178 0.6248162734076387 372 pop,GOP 0.11559139784946236\n",
      "2179 0.6366888219794622 1775 pop,GOP 0.7115492957746479\n",
      "2180 0.6935005786939347 1276 pop,GOP 0.6112852664576802\n",
      "2181 0.6642528231667169 1206 pop,GOP 0.6674958540630183\n",
      "2189 0.7955310043027128 648 pop,GOP 0.8533950617283951\n",
      "2190 0.701760108666255 320 pop,GOP 0.865625\n",
      "2191 0.6760115357577064 107 pop,GOP 0.8130841121495327\n",
      "2196 0.7999045274958198 331 pop,GOP 0.7794561933534743\n",
      "2251 0.6215764667917743 774 pop,GOP 0.8901808785529716\n",
      "2252 0.6804428102554533 580 pop,GOP 0.903448275862069\n",
      "2295 0.767288360810657 856 pop,GOP 0.5280373831775701\n",
      "2296 0.6697240500071223 82 pop,GOP 0.8658536585365854\n",
      "2455 0.7330258662408896 490 pop,GOP 0.7673469387755102\n",
      "2548 0.7791264329457541 283 pop,GOP 0.303886925795053\n",
      "2552 0.7518763875940144 590 pop,GOP 0.4745762711864407\n",
      "2553 0.7489925085754122 481 pop,GOP 0.4490644490644491\n",
      "2554 0.7457151211959626 496 pop,GOP 0.6189516129032258\n",
      "2556 0.7745872809579516 393 pop,GOP 0.6641221374045801\n",
      "2557 0.7708840042539977 448 pop,GOP 0.5982142857142857\n",
      "2558 0.7519180894654638 692 pop,GOP 0.46965317919075145\n",
      "2559 0.7163708922708246 665 pop,GOP 0.5233082706766917\n",
      "2560 0.7474325089010282 666 pop,GOP 0.7267267267267268\n",
      "2561 0.7334549298649709 688 pop,GOP 0.48546511627906974\n",
      "2562 0.7430241198485081 684 pop,GOP 0.3830409356725146\n",
      "2563 0.7487783732868281 473 pop,GOP 0.45454545454545453\n",
      "2564 0.7967691763540176 186 pop,GOP 0.9032258064516129\n",
      "2565 0.7117057268359891 76 pop,GOP 0.7236842105263158\n",
      "2566 0.7721954678990689 278 pop,GOP 0.49640287769784175\n",
      "2609 0.7541670784727187 1407 pop,GOP 0.746268656716418\n",
      "2630 0.7311151514273089 1303 pop,GOP 0.7935533384497314\n",
      "2631 0.7855245365746975 1224 pop,GOP 0.6143790849673203\n",
      "2656 0.7709412332724599 1372 pop,GOP 0.5867346938775511\n",
      "2679 0.75134034111874 995 pop,GOP 0.5437185929648242\n",
      "2694 0.7757868886392362 1310 pop,GOP 0.7267175572519083\n",
      "2709 0.7545304109548759 1329 pop,GOP 0.5387509405568096\n",
      "2746 0.7749864195407626 1499 pop,GOP 0.5550366911274183\n",
      "2747 0.731323043702983 1946 pop,GOP 0.5837615621788284\n",
      "2754 0.769220102603871 1175 pop,GOP 0.5336170212765957\n",
      "2755 0.7962342096749334 1272 pop,GOP 0.6525157232704403\n",
      "2770 0.7432325331126478 941 pop,GOP 0.5409139213602551\n",
      "2772 0.7569458167756057 2242 pop,GOP 0.6480820695807314\n",
      "2773 0.777776131940633 1381 pop,GOP 0.5365677045619116\n",
      "2775 0.7891959552112562 1204 pop,GOP 0.5274086378737541\n",
      "2776 0.7687701388515642 1153 pop,GOP 0.5741543798785776\n",
      "2801 0.7809969540595223 1706 pop,GOP 0.5855803048065651\n",
      "2821 0.7876375954359927 1505 pop,GOP 0.639202657807309\n",
      "2826 0.7959465224892583 1003 pop,GOP 0.5134596211365903\n",
      "2827 0.7557278916412602 1679 pop,GOP 0.5497319833234068\n",
      "2854 0.7963662466936573 882 pop,GOP 0.6179138321995464\n",
      "2893 0.7998592940502883 1563 pop,GOP 0.45937300063979525\n",
      "2909 0.7946551986305403 1583 pop,GOP 0.505369551484523\n",
      "2922 0.7964681732637645 647 pop,GOP 0.4312210200927357\n",
      "2923 0.7839155772397448 1127 pop,GOP 0.47737355811889975\n",
      "2930 0.799421755098417 568 pop,GOP 0.39436619718309857\n",
      "3208 0.787016783034033 839 pop,GOP 0.22169249106078665\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Plotting underused PRECINCTS\n",
    "for p in range (nPrecincts) :\n",
    "    if precinctUse[p] < 0.8 and isSkippedPrecinct[p] == 0 and vtdPop[p] > 0: #ignore suppressed precincts\n",
    "        print(p,precinctUse[p], vtdPop[p],\"pop,GOP\",vtdGOP[p])\n",
    "        pU = round(precinctUse[p],3)\n",
    "        tractX = vtdGeom[p].centroid.x\n",
    "        tractY = vtdGeom[p].centroid.y        \n",
    "        # print(t, ratio,\"(\",tractX,tractY,\")\",HDvGOP[t], \"t, pop/target,(x,y), pctR\")\n",
    "        plt.text(vtdGeom[p].centroid.x, vtdGeom[p].centroid.y,pU, fontsize=9)\n",
    "        if notPolyVTD[p] == 0 :\n",
    "            x,y = vtdGeom[p].exterior.xy\n",
    "            plt.plot(x,y)\n",
    "        else :\n",
    "            for geom in vtdGeom[p].geoms:\n",
    "                x,y = geom.exterior.xy\n",
    "                plt.plot(x,y)\n",
    "\n",
    "x,y = tractMAP.exterior.xy\n",
    "plt.plot(x,y,c=\"purple\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 350,
   "id": "37f47a77-d58e-4b4c-be60-676819128e21",
   "metadata": {},
   "outputs": [],
   "source": [
    "# (OPTIONAL) IF WE STOPPED AND RESTARTED, read the data back in:\n",
    "import pandas as pd\n",
    "infilename = \"FL_nD28tol0.01nW4.csv\"\n",
    "df2 = pd.read_csv(\"state_HD_output/\"+infilename)\n",
    "HDvPop = df2[\"HD-pop\"]\n",
    "HDvHisp = df2[\"HDvHisp\"]\n",
    "HDvGOP = df2['HDvGOP']\n",
    "HDweight = df2['HDwt']\n",
    "HDarea = df2['HDarea']\n",
    "tractLoopCounter = df2['Loops']\n",
    "tractPop = df2['tractPop']\n",
    "tractCPx = df2['centroid x']\n",
    "tractCPy = df2['centroid y']\n",
    "tractUse = df2['tractUse']\n",
    "# nearEdge = df2['nearEdge']   #add this back in, PLEASE\n",
    "df2.head()\n",
    "nTracts = len(tractPop)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "id": "e9b2c0c0-fb53-44e5-9155-1963d4833ee8",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "750596.7418101031 0.1131774380110593 0.0001361943772 0.0400616118781349 0.7450137754374908\n"
     ]
    }
   ],
   "source": [
    "#  HERE'S A BLOCK TO OVERWRITE THE REDONE DATA\n",
    "for r in range(nRedos):\n",
    "    t = redo[r]\n",
    "    HDvPop[t] = redoHDvPop[r]\n",
    "    HDvGOP[t] = redoHDvGOP[r]\n",
    "    tractArea[t] = redoHDarea[r]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "c80e0880-6811-4408-b847-6d70bd2546ff",
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt   #SKIP THIS BLOCK IF STARTING FROM FIRST BLOCK\n",
    "from scipy.stats import norm\n",
    "import numpy as np"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "id": "c8f73bb9-e36b-41c7-9220-1ec09169aa3e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# all done with redo's.  Let's look at some outputs.  First, red/blue by home district  SHOULD BE MIX OF RED AND BLUE\n",
    "nPlot = 5\n",
    "for t in range(nTracts):\n",
    "    if(t % nPlot == 0 and tractPop[t] > minTractPop):\n",
    "        redd = min(max( 0, ( HDvGOP[t] - 0.5) * 3.0 ),1)\n",
    "        bluu = min(max( 0, (0.5 - HDvGOP[t]) * 3.0 ),1)\n",
    "        plt.scatter(tractCPx[t],tractCPy[t],marker='.',color=(redd, 0,bluu ) )\n",
    "x,y = tractMAP.exterior.xy\n",
    "plt.plot(x,y,color='green')\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "id": "a5d3b510-6d1e-49ae-9a5d-03352e2b449e",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "map of tracts that were used less than 0.7 of expectation in CO\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Now, where are those UNDERPERFORMING tracts (<0.x usage)\n",
    "maxPlot = 0.70\n",
    "print(\"map of tracts that were used less than {0} of expectation in {1}\".format(maxPlot, STATE) )\n",
    "for t in range(nTracts):\n",
    "    if(tractUse[t] < maxPlot and tractUse[t] > 0.05):  #ignore skipped tracts\n",
    "        redd = min(max( 0, ( HDvGOP[t] - 0.5) * 3.0 ),1)\n",
    "        bluu = min(max( 0, (0.5 - HDvGOP[t]) * 3.0 ),1)\n",
    "        plt.scatter(tractCPx[t],tractCPy[t],marker='.',color=(redd, 0,bluu ) )\n",
    "\n",
    "x,y = tractMAP.exterior.xy   #turn these on if I pull map back in\n",
    "plt.plot(x,y,c=\"green\")\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "id": "876011e8-d37e-44a6-8dd9-a1e4d2f51e58",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "here is a map of tracts that were used more than 1.2 of expectation\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# ... And where are the OVERUSED tracts?\n",
    "minPlot = 1.2\n",
    "print(\"here is a map of tracts that were used more than {0} of expectation\".format(minPlot) )\n",
    "for t in range(nTracts):\n",
    "    if(tractUse[t] >minPlot and tractUse[t] > 0.05):  #ignore skipped tracts\n",
    "        redd = min(max( 0, ( HDvGOP[t] - 0.5) * 3.0 ),1)\n",
    "        bluu = min(max( 0, (0.5 - HDvGOP[t]) * 3.0 ),1)\n",
    "        plt.scatter(tractCPx[t],tractCPy[t],marker='.',color=(redd, 0,bluu ) )\n",
    "\n",
    "x,y = tractMAP.exterior.xy\n",
    "plt.plot(x,y,c=\"green\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "id": "19bfa7c8-0449-4182-8ed9-f5a1c1276f03",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "here is a map of 27 tracts that were used more than 1.6 of expectation\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# ... And where are the REALLY OVERUSED tracts?\n",
    "minPlot = 1.6\n",
    "counter = 0\n",
    "for t in range(nTracts):\n",
    "    if(tractUse[t] >minPlot and tractUse[t] > 0.05):  #ignore skipped tracts\n",
    "        redd = min(max( 0, ( HDvGOP[t] - 0.5) * 3.0 ),1)\n",
    "        bluu = min(max( 0, (0.5 - HDvGOP[t]) * 3.0 ),1)\n",
    "        plt.scatter(tractCPx[t],tractCPy[t],marker='.',color=(redd, 0,bluu ) )\n",
    "        counter +=1\n",
    "\n",
    "print(\"here is a map of {0} tracts that were used more than {1} of expectation\".format(counter, minPlot) )\n",
    "x,y = tractMAP.exterior.xy\n",
    "plt.plot(x,y,c=\"green\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "id": "f3e9bde3-06f6-402d-bce1-62b5631e8db0",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# CORRELATION OF TRACT UNDER-USAGE IN OTHER TRACT'S HOME DISTRICTS vs. being near a boundary\n",
    "fig, ax = plt.subplots()\n",
    "plt.scatter(tractUse,nearEdge,marker='.' )\n",
    "ax.set(xlabel=\"tract use vs. expectation\", ylabel=\"number of unfilled wedges - max = \"+str(nWedges))\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "id": "6bb5c12a-a6a4-4cb1-9026-d227bc11c2ea",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.1867395187049034 = std dev of TRACT usage.  Here is its weighted histogram\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# LET'S VISUALIZE OUR tract usage in a histogram\n",
    "n_bins=50\n",
    "avgTractUse = 0.\n",
    "statePop = np.sum(tractPop)\n",
    "for t in range(nTracts):\n",
    "    avgTractUse += tractUse[t] * tractPop[t]/statePop\n",
    "sumVarTractUse = 0.\n",
    "for t in range(nTracts):\n",
    "    sumVarTractUse += (tractUse[t]-avgTractUse)**2 *tractPop[t]/statePop\n",
    "sdTractUse = sumVarTractUse ** 0.5\n",
    "\n",
    "print(sdTractUse,\"= std dev of TRACT usage.  Here is its weighted histogram\")\n",
    "fig, ax = plt.subplots(tight_layout=True)\n",
    "# We can set the number of bins with the *bins* keyword argument.\n",
    "ax.hist(tractUse, bins=n_bins, weights=tractPop)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "id": "121f9869-3d25-4594-93b3-64a57a95aca8",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.18256760546967452 = std dev of PRECINCT usage.  Here is its weighted histogram\n",
      "this is a histogram of PRECINCT usage by precinct\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# LET'S VISUALIZE OUR precinct usage in a histogram  \n",
    "n_bins=50\n",
    "avgPrecinctUse = 0.\n",
    "stateVTDPop = np.sum(vtdPop)\n",
    "for p in range(nPrecincts):\n",
    "    avgPrecinctUse += precinctUse[p] * vtdPop[p]/stateVTDPop\n",
    "sumVarPrecinctUse = 0.\n",
    "for p in range(nPrecincts):\n",
    "    sumVarPrecinctUse += (precinctUse[p]-avgPrecinctUse)**2 *vtdPop[p]/stateVTDPop\n",
    "sdPrecinctUse = sumVarPrecinctUse ** 0.5\n",
    "\n",
    "print(sdPrecinctUse,\"= std dev of PRECINCT usage.  Here is its weighted histogram\")\n",
    "print(\"this is a histogram of PRECINCT usage by precinct\")        \n",
    "fig, ax = plt.subplots(tight_layout=True)\n",
    "# We can set the number of bins with the *bins* keyword argument.\n",
    "ax.hist(precinctUse, bins=n_bins, weights=vtdPop)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "id": "f6f03dcb-c722-4789-b47f-fb7aa3be97bc",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "here's a look at numerical stability - number of loops, avg =  9.128\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "avgTLC = 0.\n",
    "usedTracts = 0.\n",
    "for t in range (nTracts):\n",
    "    if(tractLoopCounter[t] > 0):\n",
    "        avgTLC += tractLoopCounter[t]\n",
    "        usedTracts +=1.\n",
    "avgTLC = round(avgTLC / usedTracts, 4)\n",
    "print(\"here's a look at numerical stability - number of loops, avg = \",avgTLC)\n",
    "n_bins=20     \n",
    "fig, ax = plt.subplots(tight_layout=True)\n",
    "# We can set the number of bins with the *bins* keyword argument.\n",
    "ax.hist(tractLoopCounter, bins=n_bins)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "id": "974631b2-10ef-4847-af2e-a1e26b6fa768",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "this is a histogram of home-district pct GOP by tract\n",
      "statewide vote is off by -0.00105 0.42957 HD avg vs true 0.43062\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# LET'S VISUALIZE OUR HOME DISTRICT red-blue lean in a histogram  and check the statewide vote vs. HD average\n",
    "n_bins=50\n",
    "print(\"this is a histogram of home-district pct GOP by tract\") \n",
    "print(\"statewide vote is off by\",round((stateGOP2-stateGOP),5),round(stateGOP2,5),\"HD avg vs true\",round(stateGOP,5))\n",
    "fig, ax = plt.subplots(tight_layout=True)\n",
    "# We can set the number of bins with the *bins* keyword argument.\n",
    "ax.hist(HDvGOP, bins=n_bins,weights=HDweight)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 93,
   "id": "720d9eb5-11e8-45f7-b402-a0048e9ddb99",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "calculated statewide Hispanic pct was 0.19054, should have been 0.19164\n",
      "this is a histogram of home-district VAP pct Hispanic by tract\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# LET'S VISUALIZE OUR home district pct Hispanic in a histogram\n",
    "print(\"calculated statewide Hispanic pct was {0}, should have been {1}\"\n",
    "      .format(round(stateHisp2,5), round(np.sum(tractHisp)/np.sum(tractVAP),5) ) )\n",
    "n_bins=50\n",
    "print(\"this is a histogram of home-district VAP pct Hispanic by tract\")        \n",
    "fig, ax = plt.subplots(tight_layout=True)\n",
    "# We can set the number of bins with the *bins* keyword argument.\n",
    "ax.hist(HDvHisp, bins=[0.1,0.15,0.2,0.25,0.3,0.35,0.4,0.45,0.5,0.55,0.6,0.65,0.7,0.75,0.8,0.85,0.9,0.95,1.0],\n",
    "        weights=HDweight)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 94,
   "id": "1ab7704f-a226-45a9-98a6-d0684522c1eb",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "this is a bar plot of seats by VAP pct Hispanic for CO\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# ALTERNATE VIEW OF HISPANIC VOTE: HOW MANY DISTRICTS PER 10pct BIN of PCT HISPANIC VOTE?\n",
    "n_bins = 10\n",
    "HispSeats = [0.]*n_bins\n",
    "binMid = [0.]*n_bins\n",
    "for b in range(n_bins):\n",
    "    binMid[b]= float(b)/n_bins + 0.5/n_bins  #centering each bin\n",
    "for t in range(nTracts) :\n",
    "    b = int(HDvHisp[t]*n_bins)\n",
    "    HispSeats[b] += HDweight[t]*nDistricts  #multiply by nDistricts to get number of expected seats\n",
    "\n",
    "print(\"this is a bar plot of seats by VAP pct Hispanic for\",STATE)        \n",
    "fig, ax = plt.subplots()\n",
    "plt.bar(binMid,HispSeats,width=0.09 )\n",
    "#plt.scatter(binMid,HispSeats )\n",
    "ax.set(xlabel=\"pct Hispanic\", ylabel=\"number of seats\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "id": "3ef49161-368a-40a2-83ff-92187edb3462",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "using a threshold of 0.35 the number of Hisp districts should be 0.051\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#Where in the state do we see Hispanic-heavy home districts?\n",
    "minHisp1 = 0.35\n",
    "minHisp2 = 0.40\n",
    "sumHispDistricts = 0.\n",
    "for t in range(nTracts):\n",
    "    if (HDvHisp[t] > minHisp1 and tractPop[t] > minTractPop):\n",
    "        sumHispDistricts += tractPop[t]/avgDistrictPop\n",
    "        if (HDvHisp[t] < minHisp2):\n",
    "            plt.scatter(tractCPx[t],tractCPy[t],marker='.',color='orange' )\n",
    "        else :            \n",
    "            plt.text(tractCPx[t],tractCPy[t],'o',color='blue', fontsize= 12)\n",
    "print(\"using a threshold of\",minHisp1,\"the number of Hisp districts should be\",round(sumHispDistricts,3))\n",
    "x,y = origMAP.exterior.xy\n",
    "plt.plot(x,y,c=\"green\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 96,
   "id": "a92133ad-dc95-4aa1-af02-c1d71296cee6",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "this is a bar plot of seats by VAP pct Black for CO\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# ALTERNATE VIEW OF BLACK VOTE: HOW MANY DISTRICTS PER 10pct BIN of PCT BLACK VOTE?\n",
    "n_bins = 10\n",
    "BlackSeats = [0.]*n_bins\n",
    "binMid = [0.]*n_bins\n",
    "for b in range(n_bins):\n",
    "    binMid[b]= float(b)/n_bins + 0.5/n_bins  #centering each bin\n",
    "for t in range(nTracts) :\n",
    "    b = int(HDvBlack[t]*n_bins)\n",
    "    BlackSeats[b] += HDweight[t]*nDistricts  #multiply by nDistricts to get number of expected seats\n",
    "\n",
    "print(\"this is a bar plot of seats by VAP pct Black for\",STATE)        \n",
    "fig, ax = plt.subplots()\n",
    "plt.bar(binMid,BlackSeats,width=0.09 )\n",
    "ax.set(xlabel=\"pct Black\", ylabel=\"number of seats\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "id": "b1e9c437-ddf7-4202-aff0-19f338a5d013",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYkAAAD7CAYAAACfQGjDAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8/fFQqAAAACXBIWXMAAAsTAAALEwEAmpwYAABCSklEQVR4nO3deXxU9bn48c8zk5nsQAIJhDXsyBYQRFBwQxS41qW2bkW5VS/aFrWr1i7+tLbVeq29rVuLimKrtWi1tVRQVKggyr7vWyRACCGEkHUyy/f3x5yMCZkhk5DkTMjz9jWvOXPO+Z48k+A88z3fTYwxKKWUUuE47A5AKaVU7NIkoZRSKiJNEkoppSLSJKGUUioiTRJKKaUi0iShlFIqogaThIgkiMgqEdkoIltF5JFax+4RkZ3W/ifClB0sIhtqPU6KyHetYw+LyKFax6Y36ztTSil1xuKiOMcDXGaMKRMRF7BcRBYCicA1wEhjjEdEMk8taIzZCYwCEBEncAh4p9YpvzPGPHmG70EppVQLaTBJmOBouzLrpct6GOBbwOPGGI913tEGLjUZ2GuM+aKpwXbp0sVkZ2c3tbhSSrVLa9euPWaMyWhK2WhqEjW1gLXAAOBZY8xKERkETBKRXwFVwA+NMatPc5mbgL+esm+2iNwGrAF+YIwpPl0c2dnZrFmzJpqQlVJKWUSkyV/Oo2q4Nsb4jTGjgJ7AOBEZTjDBpAHjgR8B80VEIgToBq4G3qy1+3mgP8HbUfnAbyOUnSUia0RkTWFhYTThKqWUaiaN6t1kjDkBLAWmAgeBt03QKiAAdIlQdBqwzhhTUOtaBVbyCQAvAOMi/Mw5xpixxpixGRlNqi0ppZRqomh6N2WISCdrOxG4HNgB/AO4zNo/CHADxyJc5mZOudUkIlm1Xl4HbGlc6EoppVpaNG0SWcA8q13CAcw3xiywbiHNFZEtQDUw0xhjRKQ78KIxZjqAiCQBU4C7TrnuEyIyimAjeG6Y40oppWwmbWmq8LFjxxptuFZKqcYRkbXGmLFNKasjrpVSSkWkSUIppVREUY2TUCqc+Vvnc6DkAF2Tu9KrYy/O73E+ia5Eu8NSSjUjTRKqyb7x9jfwBXyh1wlxCUzqPYkr+l/BlH5TGJ45HKfDaWOESqkzpUlCNVmqO5WrBl3Fzy/6ObuKdvHhvg/5YN8H/GjxjwBIciVxzeBreP36122OVCnVVJokVJN1TuqMx+9hYOeBDOw8kP8a9F8AHDx5kCX7l/DM6md4d+e7Nkd5esYYyr3llHpKKfeWc7zyOEUVRRyrOEZRZRHxznjuGnsXVb4q5q6fiy/go2N8RzomdAw9pyemk90pG4doE586+2iSUE3WL60f+4r31dvfs0NPbs25lRV5K9hfvL9R1zTGUOmrpNRTSqWvEq/fizfgrffsC/jwB/z4jb/OszfgpdRTSml1KWXVZaHt0upSSqpKKPGU1Hk+6TmJ3/hPG9PHuR/z1ra3TntOijuF0d1GM7b7WHK65jAscxjndDmHZHdyo96/UrFGk4Rqsv5p/Vl9KPKcjuXecgyGeRvmcbT8KEWVRZR6SjlZffLLD29PKSc9J0Mf6mXVZQRMoNlijHfGkxqfSoo7JfTNv0+nPsHtWjWC1PhUklxJpCem0zmxM12SutApoRPDnx8eShCvXPMKXxn8lXrJ5mj5UTYe2cia/DU8v+Z5qnxVAAhCdqdshmUOY1hG8DE8czhDugzRBn7VZmiSUE3WL60fxVXFFFcWk5aYVu+42+nmWMUx/vuf/w2Ay+GiQ3wHUuNTSXWn0iG+A52TOpPdKZtUd2row7xmOyEuAZfDhcvpwuVw4Xa6Q9txjjicDidOcdZ5djlcoeunuFNwOV1n9B4fuughZi+czYMTH2TmqJkApCemRzzfF/Cx5/gethVuY+vRrWwtDD7e3/M+3oAXCCaP3h17MyB9AH079aVfWj/6pfWjb1pfenfsTWZyZrPcuvIFfGwr3MYnX3zCPQvv4a4xdzGh5wQ6J3Wmc2LnYEJM6kxaQpp2MFAR6Yhr1WTvbH+Hr87/Kqv/ZzVju9cfzHnSc5LthdvpktSFzORMUtwpRJgoOKYdqzhGl6RIc1dGx+v3svv4brYe3cq2wm3sLNrJvuJ97CveR2FF3dmN4xxxpLqDNZu0xDQykjLITM4kIymDjOSM0HOKO4XEuEQS4hIA2H18N9sLt7P92HZ2HNvBnuN7QonpdNxONwPSBzC482AGdx7M0IyhTOoziexO2Wf0nlXsOJMR11qTUE3WP70/APuK94VNEh3iO3B+z/NbO6xmd6YJAsDldDE0YyhDM4bWO1ZWXcb+4v3sP7GfvJI8Dp48SFl1GRXeCo5XHaewvJB1+esorCjkRNWJ0/6cOEccA9IHMKTLEK4efDVDM4YypMsQRnYdSZWviqKKIooqiyiqKAo20lcWcejkIXYW7WT7se38a9e/Qt2a+3bqy2V9L+OCXhcwpMsQhnQZctpalDo7aZJQTdY9tTsAR8qO2BxJ25biTmFE1xGM6DqiwXOr/dUcqzhGYXkh5d5yqnxVVHorCZgA/dP7MyB9AG6nO2zZhLgEOiV0oj/9I17f6/eys2gnS/Yv4ePcj/n79r/z0vqXQsczkjLol9aPzknB21VpCWmkJ6bX2U5LrLvvTG/5NdWCXQs4ePIg2Z2y6ZfWj3hnfOjWZM3tSkFwiAMRqbcdHxevPdbQJKHOQHpiOg5xUFiui0G1FrfTTffU7qEE3dxcThfDM4czPHM495x/D/6An9wTuew4tiP0yC3JpaCsgO2F2zleeZwST8lpr5nsSqZDfIdQJ4FOCZ1C7SKdEzvTKaFT6ANbRHA73SS5kkiMSyTJlVTn0TGhI12SukRMhDVKqkr46t++GtXttki6pXTjgl4XIARvkRrq35p3iKNO0okT69kRV3d/rdedEjrxnXHfafA9xApNEqrJHOKgc2LnevfU1dnD6XDSP70//dP7h8bBnMoX8FFSVcLxyuMcrzxOcVXxl9uVxRRXFXPSc5KTnpOUeILn7T6+m6KKogYTTCQd4zuG2mdqt9d0iO+Ay+EKtcf848Z/0DmpM7kncvH6vfiNP9R92hfwYTAYYwiYQJ1tj9/D+3vfZ+exnXV+bu02tZpza7pf+wK+etcPdwwgp1sOl/W9rEnvvbVpklBnJCM5Q5NEOxfniAvWDJI6N7qs1++ltLqUgAkEP6iNodpfTaWvkgpvBZXe4HPN40TVCY6WH6WwopDCikKOlh9lX/E+Vh5aybGKY3WmicnulM1Vg67C6XAysffERsf20MUPNbpMQ7YVbmPYc8P45Se/1CSh2ofM5Ey93aSazOV0NVtjeMAE8Pg8+AI+vAEvya7kmOva2z8t2B60JHeJzZFET5OEOiMZSRlsKthkdxhK4RBHzA9SjHMEP3KnD5xucyTR06Z7dUY6xHegtLrU7jCUahPWH1kPwPk92k7XcE0S6owku5Ipry63Owyl2oT7F99PWkIa955/r92hRE2ThDojCXEJVPoq7Q5DqZi35vAaluQu4abhN7Fg1wLaymwXDSYJEUkQkVUislFEtorII7WO3SMiO639T0Qonysim0Vkg4isqbU/XUQWi8hu67n+5D8q5pV4SugQ38HuMJSKefctug8INlrf+s6tTHx5It1/2z3mB6NG03DtAS4zxpSJiAtYLiILgUTgGmCkMcYjIpmnucalxphjp+z7MfCRMeZxEfmx9fqBJrwHZaPjlcebZdoKpc52Sa4kuiR1YcexHQCsyFsBQFFFEd1SutkZ2mk1mCRMsE5UZr10WQ8DfAt43Bjjsc472siffQ1wibU9D1hKO0oS/oCfTQWbWH5gOYdLD4dmLo30nBCXgNPhxCGO0CjPmu2aqQNqBgTV3u8QR2gka0s4UHKAjKSMFrm2UmeTaQOm8eG+DwGYMXIGf9n0F0Z3G82QLkNsjuz0ouoCKyJOYC0wAHjWGLNSRAYBk0TkV0AV8ENjTLjFBQzwgYgY4E/GmDnW/q7GmHwAY0x+AzWRNunVja9ypOwISa4kbhlxC0UVRTy2/DFyT+Sy5vCaUK8gpzgbXPjmTJ2aOOIccSTEJdR5xDvjiY+LD/vsdrrr7XeKk1WHVrXIoCOlzjZ3jbmLXy37VWg0OsBXBn0l5sZynCqqJGGM8QOjRKQT8I6IDLfKpgHjgfOA+SLSz9RvjbnQGHPYSgKLRWSHMeaTaAMUkVnALIDevXtHW8x21f5qvvnPb4YW0HE73Ww8spGXN7zM+T3OZ8bIGUzqPYkLe19Irw698Pg9dRbiOfXZ4/eERqX6A/7Qds20ADWTk0Fwjpk6x085P2ACVPur8fg9eHweqvxVVPmCD4/Pg8fvoayiLHTc4/cEz7e2PT5PaE6cFHcKNw+/2bbfs1JtRbI7me+c9x0e/eRRhnYZynu73+Nw6WG7w2pQowbTGWNOiMhSYCpwEHjbSgqrRCQAdAEKTylz2Ho+KiLvAOOAT4ACEcmyahFZQNjbVVbNYw4E15NoTLx2cjvdXNTnIpbmLgUgKyWL5/KeY0q/KXxw6wf1zq/5Np+R3DZu3QRMAF/Ah8vhapNrRChlh0cueYR7xt3DdX+7DoAfXPADmyNqWDS9mzKsGgQikghcDuwA/gFcZu0fBLiBY6eUTRaR1Jpt4Apgi3X4XWCmtT0T+OeZvZXYM33Al6MqRYSNBRvbzHwtDXGIA7fTrQlCqUao+Rz4NO9T7hh9R8y3R0B0NYksYJ7VLuEA5htjFoiIG5grIluAamCmMcaISHfgRWPMdKArwdtTNT/rdWPMIuu6jxO8RXUHcAD4erO+sxiQmfxlM8sL614A0FszSrVjHp+H77z3HQakD+CZ6c/YHU5UoundtAkYHWZ/NTAjzP7DwHRrex+QE+G6RcDkRsbbphyr+LJi9e7Od5k6YCp9OvWxMSKllJ2e+uwpdhXt4v0Z74eWnY11OuK6BX128DO6pXTjta++xq0jb+VPV/3J7pCUUjb6/NDnZCZnckX/K+wOJWqaJFpIYXkh7+58l5uH38wtI27h1etepXfHttM7SynV/IZlDONo+VG2HN3S8MkxQpNEC1mbvxZvwMu1Q661OxSlVIyYmRPsq/Of3P/YHEn0NEm0EI/PA0C8M97mSJRSsWJg54G4nW5WHlrJtsJt+AMtO4i2OWiSaCGjuo0CYNWhVfYGopSKGb///PdU+6v586Y/M+y5YcxZOyd0zBhDla/KxujC0yTRQvp06kOfjn34zxdtp1qplGpZH+wLDqQdkTkCgKdXPQ3AhiMbuPGtG0n8VSJrD6+1Lb5wdPnSFnRx9sUs3L0QY4wOOlNK8dpXX8Mf8JPkSiLlsRS2H9vOirwVXDj3wtA587fOZ0z3MTZGWZfWJFrQhb0upLCikH3F++wORSkVA9IT08lIziDZncy4HuMA+Na/v1XnnCPlsbW+hCaJFjS+53ggOF5CKaVqq1nnelPBJuZcNYcFNy8AYExW7NQiQJNEi6qZl2V/8X6bI1FKxZo7Rt9BWkIal2Zfyu2jb+f5Nc8DsTd1j7ZJtKBKb3Dt50RXos2RKKViTU63HI4/EFxX4qTnJO/vfZ8fTvhhzM0ErTWJFpR7IheAPh11vialVGQf7P0AX8DH1YOvtjuUerQm0cwKygr4cN+HjOk+hm2F2wDol9bP5qiUUrFswa4FpCWkMaHXBLtDqUeTRDOb/vp01uWvQxBS3Cn0SO1BTrewE+EqpRT+gJ/3dr/HtIHTiHPE3kdy7EXUhuWX5rMufx2zz5tNanwqyw8s51eX/Som//BKqdiw+vBqCisKuWrgVXaHEpZ+ejWjmsXNJ/SawC0jbrE5GqVUW7Bg1wKc4uTKAVfaHUpY2nDdjLI7ZQOw5/geewNRSrUZK/JWcG7WuaQnptsdSliaJJpRsjuZMVljeGXDK6FZYJVS6nS+KPmCzkmduW/hfTz6n0ftDqceTRLN7LHJj7H/xH7+tFZXoVNKNeyiPhexaM8i/rDqDzy09CG+OPGF3SHVoUmimU3pP4VJvSfx62W/Do2TUEqpSP501Z+YmTOT/mn9Acj+fXbomDGG8upymyILajBJiEiCiKwSkY0islVEHql17B4R2WntfyJM2V4iskREtlvn3Ffr2MMickhENliP6c33tuz1h2l/oKC8gL6/78vGIxvtDkcpFcPcTjevXPsKe+79si3zza1v4gv4+M2nvyHlsRRbpw+PpneTB7jMGFMmIi5guYgsBBKBa4CRxhiPiGSGKesDfmCMWSciqcBaEVlsjNlmHf+dMebJ5ngjsWRUt1E8N/05vv3et3l28bP8/JKf06tXL7vDUkq1ETe8dQMJcQmhRYiWHVhm2/ThDdYkTFCZ9dJlPQzwLeBxY4zHOu9omLL5xph11nYpsB3o0Uyxx7Srul2FAwc79u3g1VdfJS8vz+6QlFIxrvKnlfzPuf8DUGeVukMnD9kVUnRtEiLiFJENwFFgsTFmJTAImCQiK0XkPyJyXgPXyAZGAytr7Z4tIptEZK6IpDXpHdisylfF5FcnM+tfs/jJRz9hz/E9GGN44MMHCBDAixe/309ubq7doSqlYlxCXAJzvjKHEw+cAGBCzwn07NCTY5XHbIspqsF0xhg/MEpEOgHviMhwq2waMB44D5gvIv2MMebU8iKSAvwd+K4x5qS1+3ngUYK1kkeB3wK3hyk7C5gF0Lt370a9udawZP8SPt7/MR/v/xiAVza8wvXnXM9fD/wVgF70wul0kp2dbWOUSqm2pGNCR8z/C36UdnisA3uP77UtlkaNuDbGnBCRpcBU4CDwtpUUVolIAOgCFNYuY7Vj/B14zRjzdq1rFdQ65wVgQYSfOQeYAzB27Nh6CchuNQPnNt29CRFh2mvTeGb1M0zuO5lHxj5CoChAdna2tkkopZrkoj4Xsfrwatt+foNJQkQyAK+VIBKBy4HfAGXAZcBSERkEuIFjp5QV4CVguzHmqVOOZRlj8q2X1wFbzvTN2OG8HsG7bGsOr+Gbo7/J9u9sZ8vRLYzJGoPL6bI5OqVUWxfniCPFnWLbz4+mTSILWCIim4DVBNskFgBzgX4isgV4A5hpjDEi0l1E3rPKXgjcClwWpqvrEyKy2brupcD3mvONtZZxPcYxInMET6x4An/AT4o7hfE9x2uCUEqdsWp/Ne/vfZ8p/abYFkODNQljzCaCDc6n7q8GZoTZfxiYbm0vByTCdW9tbLCxyCEOfnbRz7jxrRt5c9ub3DT8JrtDUkqdJdbnr6fKV8XobvU+gluNjrhuBtefcz3ndDmHX/znF/gDfrvDUUqdJR5b/hip7lRbV6zTJNEMnA4nD1/yMNuPbef1za/bHY5S6iyxqWATVw64kqzULNti0CTRTL429GuMyRrDAx8+EFpXQimlzkScI463tr3FZ3mf2RaDJolm4hAHc74yh/yyfJ5b/Zzd4SilzgIX9LoAgKvfuBqv32tLDJokmtG5Wecyue9k5q6fS5gxhUop1SgvX/My866dx7GKY2w/tt2WGDRJNLPrhlzH/hP7+aIktuaEV0q1PSLCC+teACDeGW9LDJokmtm4HuOAYNc1pZQ6E8YYlh9YDsCA9AG2xKBJopl1TOgIQIW3wuZIlFJtXVl1cALuSb0n4XQ4bYlBk0Qzc0jwV+o3Ol5CKXVmUuNTuXn4zaw8tBKPz2NLDJokmtmmgk0AZCaHW4NJKaUaLz0xHbfTbcvP1iTRjPwBPw8teYiB6QOZ3Hey3eEopdq4gAnw1y1/JdWdSnC+1NbXqKnCVWT+gJ9Z/5rF1sKtzP/afJ3gTyl1xvYX7wdg9/HdtsWgNYlmcveCu5m7YS4/v+jnfG3o1+wORyl1FvjmP78JwLJvLrMtBq1JNINdRbt4cf2LfH/89/nFpb+wOxyl1Flgff56lh1Yxp2j72Ri74m2xaE1iWawaM8iAO4bf5/NkSilzhZz1s4h2ZXMk1c8aWscmiSaQc2Efj1Se9gciVKqrWhoLqZlB5ZxUZ+LQmOv7KJJohmUVJWQ6k61bbCLUqpteWPLG6Q/kc6S/UvCHi+pKmFb4TYm9JzQypHVp0miGZz0nKRDfAe7w1BKtQEr8lZw899vpqy6jB8u/mHYcz47+BkGw4W9L2zl6OrTJNEMSjwlmiSUUg3yBXz89z/+G4Dzup/Huvx1nPScrHfe8gPLcYqT83uc38oR1qdJohmUeErolNDJ7jCUUjHu3Z3vsvv4buZ/bT4/nfRTAKa9Nq3eeZ/mfcrorNEku5NbO8R6tAtsMyiuLCYjOcPuMJRSMayooojZ783mnC7ncO2Qa3E5XbidbnYc21HnPK/fy8qDK5k1ZpZNkdbVYE1CRBJEZJWIbBSRrSLySK1j94jITmv/ExHKT7XO2SMiP661P11EFovIbus5rXneUuvy+r1sP7adgekD7Q5FKRXD7lt0H/ll+bx09Uu4nC6MMbgcLqYNqFuTWH9kPZW+Si7sZX97BER3u8kDXGaMyQFGAVNFZLyIXApcA4w0xgwD6nXmFREn8CwwDRgK3CwiQ63DPwY+MsYMBD6yXrc5Gws2UuGtiJk/qFIq9jy54kle2/waF/e5mPE9xwPBqTbKveVM6j2pzrmfHvgUICYarSGKJGGCyqyXLuthgG8BjxtjPNZ5R8MUHwfsMcbsM8ZUA28QTCxYz/Os7XnAtU19E3b54sQXzHh7BgATetnfVU0pFXvW5a/jR4t/BMDbN74dmqhvV9EuAEZ1GxU6N2ACvL3jbfqn9ad7avdWjzWcqBquRcQpIhuAo8BiY8xKYBAwSURWish/ROS8MEV7AHm1Xh+09gF0NcbkA1jPYefWFpFZIrJGRNYUFhZG9aZayysbXmFn0U7G9RhHrw697A5HKRWDHl/+OAD/vuXfpCemh/afqDoBUKdxeu76uSw/sJwfTPhBq8Z4OlElCWOM3xgzCugJjBOR4QQbvdOA8cCPgPlSfy7bcHPbmsYEaIyZY4wZa4wZm5ERW43Dk/sFpwP/6aSf2jaNr1Iqtm0t3Mo1g69h+sDpdfZ3Te4KEGq4Nsbws49/Rk7XHO4ee3erxxlJo7rAGmNOAEuBqQRrBW9bt6NWAQGgyylFDgK1v2L3BA5b2wUikgVgPYe7XRXTuqV0A4KjI5VSKpxthdvYfmx7vf2dkzoDEOcIdjK95e1bKCgvYMbIGTH1pTOa3k0ZItLJ2k4ELgd2AP8ALrP2DwLcwLFTiq8GBopIXxFxAzcB71rH3gVmWtszgX+eyRuxQ7wzHoAqX5XNkSilYtXQjKHkleTV218z59tb297iT2v+xBtb3gCIqVoERFeTyAKWiMgmgh/6i40xC4C5QD8R2UKwQXqmMcaISHcReQ/AGOMDZgPvA9uB+caYrdZ1HwemiMhuYIr1uk3pmtKVeGc8qw+vtjsUpVSMKiwv5KpBV9Xb37dTXwBe2/wad//7blLdqRTdX0SKO6W1QzytaHo3bTLGjDbGjDTGDDfG/MLaX22MmWHtO9cY87G1/7AxZnqt8u8ZYwYZY/obY35Va3+RMWayMWag9Xy8Jd5gS3I73Xxz1DeZu34uqw6tsjscpVQMeG3Tawx5ZghPrniSwvJCCisKyemaU++8/un9OfKDIyTGJQLw+vWv12nYjhU64voMPXb5YyzYvYDb/3k76+5aZ9ti5Uop+63PX8+Md4Ld4n+0+EcUlBUAcF6PcJ0/g3cj8r6Xx8I9C+s1bMcKnbvpDHVK6MRz059ja+FWfrP8N3aHo5Sy0ad5wYFwT097GoAnP3uSzomdubzf5RHLdE7qzIyRM3BIbH4cx2ZUbcxXBn+FG4fdyK+W/Sr0zUEp1b6Uekq5Z+E9AEwbMI2slCwg2AsyVhNANNpu5DGg0ltJcWUxAPedfx8ev0fbJpRqpxJdiaHtfmn9eOrKpwD44QXh14xoK7RNookCJsAFcy9g69GtvHvzu5ybdS4AuSdy7Q1MKWWLmvEOTnEiItw47EYuyb4kNJ6qrdKaRBN9sPcDNhzZgDfg5TvvfYeO8cF1aIurim2OTClll0m9J4XWlhGRNp8gQJNEk81dP5cuSV346/V/ZV/xPv6y6S8AJLvsXyREKWWPC3tdyEnPSYxp1OxDMU2TRBMtP7Cc6QOn8/WhX2dQ50Hc+a87AejZoafNkSml7OLxe/AGvJR7y+0OpdlokmiCKl8V+WX5DEwfiNPh5MGJD4aO1Uz6p5Rqf8qrg8lh7eG1NkfSfLThuglq5mqqGSn5jRHfYEXeCq7sfyVdkk6d41Ap1R4cqzjG3A1zSXWnMqb7GLvDaTZak2iCjvEd6ZrclX/s/AfV/mpcThdzvjKH64deb3doSimbVHor8QV8fH/C92Nu/qUzoUmiCUSEJ6Y8wfIDy7niz1eExkoopdqvmsRQ07vpbKFJooluy7mNv1z3F1bkreDyP19OhbfC7pCUUjaqaayu9FbaHEnz0iRxBr4x8hu8dcNbrMtfF+oCq5Rqnx5Z+ggOcXDNkGvsDqVZaZI4Q5P7Bnsz1SwgopRqf0o9pby4/kVGdRvF0IyhdofTrLR3UxNtL9xOcVUxh04eAmBYxjCbI1JK2aVmzrY7Rt9hcyTNT5NEExwoOcD5L55PaXUpAIM7D47ZueCVUi1v+YHlCMJtObfZHUqz09tNTfDUZ09RWl3Klf2vJMWdwktXv4TT4axzTl5eHsuWLSMvr/7atkqps8v2Y9vJ7pR9VnV9raE1iSb4+/a/c/051/PWDW/h8XmIj4uvczwvL49XX30Vv9+P0+nktttuo1evXjZFq5RqToXlhVw671L2Fu9l1rmzeGLKE/xt69+4oNcFdofWIrQm0QSlnlJ6pPYAqJcgAHJzc/H7/Rhj8Pv95ObmtnKESqmW8stPfsnWwq1U+ar4w6o/kPCrBABuHXmrzZG1jAaThIgkiMgqEdkoIltF5BFr/8MickhENliPejflRWRwreMbROSkiHw32vKxqspXVWeBkVNlZ2fjdAbnlHc6nWRnZ7decEqpFuEP+PnFf37BH1b9gZk5M/H+3Mv4nuMBGNJlCHeNucvmCFtGNLebPMBlxpgyEXEBy0VkoXXsd8aYJyMVNMbsBEYBiIgTOAS8U+uU05aPBcYYlh1YxoSeE/AGvCTEJeDxe0iISzhtuZycnNCz3mpSqm3bcWwHI54fgS/go2N8R/53yv8S54jj09s/5YW1L3DVoKsQEbvDbBENJgkTnBi9zHrpsh5NmSx9MrDXGPNFE8ra5o9r/si33/s2AAlxCTw5JZjTMpIywp5fuz3C4fiyoqaJQqm2640tb+AL+Hh62tN89ZyvkpEc/P/fIQ7uGnt21iBqRNUmISJOEdkAHAUWG2NWWodmi8gmEZkrImkNXOYm4K+n7GuwvIjMEpE1IrKmsLAwmnCbTX5pPvd/eD8AbqebKl8VsxfOpnNiZ2aMnBG2zKntEWvXruXVV1/VXk5KtWErD62kT8c+zB43m+6p3e0Op1VFlSSMMX5jzCigJzBORIYDzwP9Cd5Oygd+G6m8iLiBq4E3a+2OqrwxZo4xZqwxZmxGRvhv7y3l9c2vU1Zdxoa7NlDy4xL+a+B/keJO4bWvvsbJwpNhu7jWtEfUpo3XSrVd5dXlvL/nfW4cdqPdodiiUV1gjTEnRGQpMLV2W4KIvAAsOE3RacA6Y0xBrWuFtqMo3+p8AR9Pr3qaC3tdSE63YPvCOze+g9/4KcwvjNjFtVevXtx2221s3LiRDRs2EAgEtPFaqTaooKyAp1c9zVOfPYXBcHH2xXaHZIsGk4SIZABeK0EkApcDvxGRLGNMvnXadcCW01zmZk651dTI8q3uSNkRvij5gh9d8KPQPpfThQtX2C6utdscevXqRa9evcjJySE3N5fs7Gxtk1CqjXn0k0d5dvWzAEzsPZHL+11uc0T2iKYmkQXMs3onOYD5xpgFIvJnERlFsBE7F7gLQES6Ay8aY6Zbr5OAKTXHa3kiXPlYUbOQebhxEDW3lGpqEpFqCTXJQinV9nyw9wOu6H8FT13xFEO6DKk3q0J7EU3vpk3A6DD7w44cMcYcBqbXel0BdI62fKxwO90AeP3eesdqbilpLUGps1eJp4SslCyGZbbvyTt1Wo4IamoQNQuJnEprCUqdvQImQFFFEWkJDXXaPPvptBwRdIzvSFZKFhuObLA7FKVUK3t98+v4jZ+x3cfaHYrtNElEICJc0OsCVuStsDsUpVQrMsZw/+L7SXGncNPwm+wOx3aaJE5jQs8J7D+xnyNlR7h34b30+b8+lFSV2B2WUqoFGGP49bJfM3f9XPLL8vnJxJ+028bq2rRN4jQu63sZAH9Y+QeeXvU0AIv2LOLG4e1zUI1SZ7P/XfG//PTjn4Ze35oT031rWo3WJE5jVLdRTOo9iceWPxba90VJm5p6SikVpff3vh/azkzObHfTb0SiSeI0RIS/fe1v3DDsBr43/nsAxDm08qXU2cbj8/Dx/o+5c/SdrLpzFbvv2Y1D9OMRNEk0KCs1i7997W/cMuIWALokdbE5IqVUczvvhfMAuHbItZzX4zw6xHewOaLYoUkiCsYYfvjBD+mU0Ikr+19pdzhKqWa0u2g3m49uZvrA6Uwf2GbWPms1eu+kAdsKt/HVv32VnUU7eW76c3RN6Wp3SEqpZnK0/Ci3/eM24p3x/H7q78/ahYPOhCaJ0yivLufrb36dnUU7mTZgGrPGzLI7JKVUM9lydAsjnh8BwJ+v+zMD0gfYHFFs0iRxGg8teYjthdv5YMYHTOk/pc6xvLw8nbtJqTbsHzv+AcD/Xfl/fGPEN+wNJoZpkojAGMMrG1/hxuE3hk0QkdaTUErFPq/fy182/YVzs87lvvH32R1OTNOG6whKPCUcrzzO6G71JsANu56EUio2nag6EZyLKeAP7fv37n+zs2gnP5n4Exsjaxu0JhFBx/iOdIzvSO6J3HrHol1PQillj+2F2zlafpQO8R244a0b2HN8D0UVRdxz/j0ALNm/hHhnPFcPvtrmSGOfJokwjlUc46TnJIO7DGZn0c56x8OtJ6FtFErZq7C8kDv/dSfv7nw37PF7F93LvYvuZWLviSw/sJzpA6fjcrpaOcq2R5PEKV5e/zL3LrqXCm8FXZO7Uumr5KTnZL3BNbXXk9A2CqXs9+33vl0nQTxx+ROUe8tZkbeCi/tczM+W/AyA5QeWk+pO5ZFLHrEr1DZFk0Qt5dXlzF44m6EZQzlcepjDpYcBmPTyJD6/43MSXYlhyzW05rVSqmXtK97Hv3f9m0uyL+HFr7xIv7R+dcY8GGN4cNKDOMRBpbcSv/GT4k6xMeK2Q5NELQt2LaDCW8GTU57kpOckV79xNUmuJDYVbGLloZX0d/YPe0spUhuF3oJSqnXc+e6duJ1uXrr6Jfql9at3XEQQgkkj0pc9FZ4miVre2PoGWSlZTOw9EYc4mNBzAp8d/AyAN9e/Sfdt3cPeUorURqG3oJRqeasPrWZJ7hKeuuKpsAlCnZkGu8CKSIKIrBKRjSKyVUQesfY/LCKHRGSD9Qg76YmI5IrIZuucNbX2p4vIYhHZbT3buphsSVUJC3cv5IZhN+B0OBERHpv85RThlaWVp+322qtXLyZNmhRKBNpNVqmWtfbwWqa/Np1xL44j2ZXM7aNvtzuks1I04yQ8wGXGmBxgFDBVRMZbx35njBllPd47zTUutc6pvWDsj4GPjDEDgY+s17b5585/4vF76ixXeHH2xYzIDA7bH5Q1CKczmDyi6fZacwsq2vOVUtEzxvD1N7/Owj0LSXIl8faNb9MxoaPdYZ2VGrzdZIwxQJn10mU9TDP87GuAS6ztecBS4IFmuG6TvLHlDfp07MP5Pc6vu/9rb/C997/HHRfcQdWQqqjbGMLdglJKNY9thdvYf2I/T097mhkjZ9ApoZPdIZ21omqTEBEnsBYYADxrjFkpItOA2SJyG7AG+IExpjhMcQN8ICIG+JMxZo61v6sxJh/AGJMvIpln+maaqqiiiMX7FvP98d+vNwvk0IyhvD/DWrEqmTof9g01TNfuJquUaj7v7Q7euLh2yLWaIFpYVEnCGOMHRolIJ+AdERkOPA88SjAJPAr8Fgh3U/BCY8xhKwksFpEdxphPog1QRGYBswB69+4dbbFGeXv72/gCvjq3miKpSQxJSUksWrRIG6aVssGqw6vokdqDnh162h3KWa9RvZuMMSdEZCkw1RjzZM1+EXkBWBChzGHr+aiIvAOMAz4BCkQky6pFZAFHI5SfA8wBGDt2bHPc5qrnja1vMDB9IKO6jTrtebV7LIkIxhgdG6FUKzPG8NG+j7hq0FV2h9IuRNO7KcOqQSAiicDlwA7rg73GdcCWMGWTRSS1Zhu4otZ57wIzre2ZwD+b+B7OyJGyIyzNXcpNw29qcMGR2j2WAoFAsO+1Nkwr1WqMMUx+dTLFVcWMyRpjdzjtQjQ1iSxgntUu4QDmG2MWiMifRWQUwdtNucBdACLSHXjRGDMd6Erw9lTNz3rdGLPIuu7jwHwRuQM4AHy92d5VI7y17S0CJhC61XS6doZTB81NnTqViooKbZhWqpX0eKoH+WX5jMgcoYuAtRIJdl5qG8aOHWvWrFnT8ImNMHHuREo8JWz+1uaoBsDpKGql7LHm8BrOe+E8AMoeLCPZnWxzRG2HiKw9ZQhC1Nr1ehJ5JXl8mvcpNw0L1iKiGQB36qC5iNfOy2PZsmXk5eW1ROhKtTs1CeJPV/1JE0QratfTcszfOh+AG4ffCDS8TkS0tQidkkOp5lV7XZc7z73TvkDaoXadJN7Y+gZjssaEFkA/3QC42h/8DoeDUaNGkZOTE/bDX2eFVap5fbD3AwCenvY0DmnXN0BaXbv9beeV5LHm8BpuHHZjnf2Rbied+sG/du1aXn311bC3k3RKDqWa197jewGYMXKGzZG0P+22JrG3OPiP7tysc6M6v+aD3+fzhfZFqiXolBxKNZ/9xft5YsUTXDP4Gh1dbYN2myQKygoA6JbSLarzaz74N27cyIYNGwgEAqetJeiUHEo1j4Ly4P+rU/pNsTmS9qndJokjZUeA6JMEfPnBn5OTo7UEpVrJyK4jcYgjlCxU62rXScLlcJGW2PhlLLSWoFTrSXIlMbjzYDYWbLQ7lHap3TZcJ7mS8Aa83LfwPq5941o6PNaBb/7zm2HP1TEPStmrY0JHyqvL7Q6jXWq3SeKusXeRnpjOM6ufYVvhNkqrS9lfvL/eeTVdX5csWRKxN5NSqmUFTKDBudVUy2i3SSIzOZND3z9E6YOlbP32VlwOF+N6jKt3XjSjsLWmoVTLKSgrYM3hNYzNatKsEuoMtds2CYCEuAQAdhftxhvwMjRjKACffQZLl8IllwS7vjocDvx+PwBJSUl1Rl4DOrpaqRb0rX9/i4AJMHPUzIZPVs2uXSeJGjuLdgIwuPNgPvsMJk+G6mpwu+H1193UTIJojOG9995DREJdYHNycnR0tVItaF/xPoZnDmdIlyF2h9IutdvbTbXtPGYliS6DWbo0mCD8/uDzwoUVBAKB0LmBQKBOUgB0dLVSLahbSjdttLaR1iSAXUW76JLUhfTEdC65JFiDqKlJjB/v4cCBL88VERwOR52ahI6bUKrl9E/rz4q8FXaH0W5pkgC+KPmCvp36AjBhAnz00ZdtEj5fIXl5ErrldO6554ZNCpoclGoZR8qP6FrWNmrXScIYQ0F5Ae/vfZ/rhlwX2j9hQvABkJf35ZxNDoeDrKwsHUynVCuq8lVxtPwoHp+H+Lh4u8Npd9p1m8T//Ot/yPptcKnukV1H1jv+2Wfwl7/0onv363E4HBhjWLRoUdiurtoNVqmWMX3AdIoqi/ii5Au7Q2mX2m1NwhjDOzveAeC753+Xya6f8dhjwVtMEyZQp5dTXNxAbr21Bz175oXtwaSLDCnVcgzBW70BE2jgTNUS2m2SOFp+lOOVx/n91N9zXuDeOt1ea9okano5gYMvvuhLr14Hw/Zgys3NDU0h7vP5tBusUs3otc2vMTxzOIM7D7Y7lHapwdtNIpIgIqtEZKOIbBWRR6z9D4vIIRHZYD2mhynbS0SWiMh2q+x9tY41WL4llXuDXepS3Cn1ur3WNFq73eB0gtstfPvbQ7n00kuZOnUqubm5dW4rJSUl1bn2oUOH9LaTUo1QVFFEtb+63v49x/fw+cHPuXn4zToth02iqUl4gMuMMWUi4gKWi8hC69jvjDFPnqasD/iBMWadiKQCa0VksTFmW5TlW0yfjn1IdiWz4cgGbr6kbrfXmltONTWKc84pIC5uNYcOlbFnzx4CgeA8MtOnT2fMmDFUVFQg8mUPqJ07d7J371697aRUFArLC8l8MpPR3UazZtaa0PKkVb4q7l5wN/HOeG4ffbvNUbZfDSYJE/zkK7NeuqyHiebixph8IN/aLhWR7UAPYNtpC7YCp8PJ+T3P59nVz+Ib4+PZd+7gyLoxddokPv44j+Tk1WzcuLle+ZrR15mZmY1atU4pVdfc9XMBWH9kPbuKdjGkyxAOlx7msWWP8dH+j/jjf/2xUeu+qOYVVe8mEXGKyAbgKLDYGLPSOjRbRDaJyFwROe3CDCKSDYwGVtbaHXX5lnDXmLsImADPr3me+zdNZfb3S0MJYsaMPCorX6W4eAuBQPhqbiAQCCWC2267jTFjxujoa6UaocpXxVOfPxValvSmt25ixPMj6PFUD55Z/Qx9O/XlrrF32RtkOxdVkjDG+I0xo4CewDgRGQ48D/QHRhGsLfw2UnkRSQH+DnzXGHPS2h1VeRGZJSJrRGRNYWFhNOFG7YZhN5B7Xy5LZi7hWMUxFu0Jdm/95S/30717Lk6nH4fDcLqKU+0J/3Jycpg5cyaXXnqp3mpSKgqvb36do+VHeenqlwDYWLCRLUe3hI7Pu3aeXaEpS6N6NxljTojIUmBq7bYEEXkBWBCujNWO8XfgNWPM27WuVVDrnIjljTFzgDkAY8eOjeo2V2P06dSHrNQs4hxxfLLrE3Zs2UXXrlls3Xopfr8TY/wE28vC/+j8/HwWLVpUp/vrpEmTmjtMpc461f5q7nj3Dib0nMC1Q67lnRvf4bXNr3H3mLtZdmAZ9194P0mupIYvpFpUNL2bMkSkk7WdCFwO7BCRrFqnXQdsCVNWgJeA7caYp0451mD51uJ2ujmnyzl8nvc5fr+fPn3ymDz5Y7ZsGUppaapVm6jP4Qj++hpab0IpVd/DSx8G4IELH8AhDq4dci1vfv1NJvebzMOXPKwJIkZEU5PIAuaJiJNgUplvjFkgIn8WkVEEv2LnAncBiEh34EVjzHTgQuBWYLPVpgHwE2PMe8AT4crbwRjD5qPBxukrfdfidPrp2fMgvXsfxJym7jJo0CBycnLYuHFjqCah7RBKRaegLHgz4erBV9sciTqdaHo3bSLY4Hzq/lsjnH8YmG5tLwfCtvpGKm+H7ce2h7bnzLmTPn2+4MorP0Ck5lZTeBUVFaFGa50FVqnGSXIlkZ6YruMfYly7nrsJoNRTyrDnhgEwbv87FBZ2JSHBg9MZOG2CADhw4AAffvhhK0Sp1NmnzFtGsivZ7jBUA9rttBw1ck/khrZHJE1hFZCbm00g4GiwJgHw6aef8vnnn4fWl9BeTUpFp7y6nGS3JolY1+5rEpnJmQjCgxMfJG9v3X+wxoDfLxQUZJz2GtpwrVTjlVWXkeJOsTsM1YB2nyS6pnTlgl4XMO/zd/lgcXCWyezsXA4d6s6nn07k4MGebN06jLy8yIueOBwOHUCnVCOVe8v1dlMb0O5vNwHcPfZubn3nVjj3RVg7i507B/L55+Px+504nX7S0opISztOr14Hw5YfPXo0HTt21IZrpRqhrLqMrJSshk9Utmr3NQmAb4z4Bh2LL4Wp90HKEQoLu+LzxWGMA58vjvj4akaMiDyMIycnh0mTJmmCUKoRtE2ibdAkAYgII489Cq4qyFoD+K0jwUES2dm5DQ6oU0o1Tlm19m5qC9r1J5zX7+WjfR/h8XkoLan5VQjgrLUt7Nw5yJqio/41AoEAGzdu1KVLlWqkcm+5Nly3Ae06Sdy36D4u//Pl3Pz3mznk+k9wZ8EI6+iXfV8LC7vyt799HWMkbKLYsGEDS5Ys4dVXX9VEoVSUtCbRNrTbJLGveB9/XPNHXA4X7+x4h8KcB+HQWDjZmy8TxJcZYe/eAeTl9Qg7biIQCGgXWKUaodpfjS/g05pEG9Buk8TyA8sxGOaN38hk5yO4KnrCR7+2jtYkBwk9GyMUF6eHvZaIaBdYpRqhrDq4jpk2XMe+dtsFtmak9e1f7Ye38iECgZ/XqjicWl0wiBiys3PDXmv69OlUVFRoF1ilolSTJFLdqTZHohrSbmsSB08eJIWueCvj8fvBmNPPvzFq1Fo6djwZtk1i06ZNlJSUtFCkSp19apKE3m6Kfe02SVT7q0lJSMDtplY7Q6REISQmeoJbYU45cOAAa9euZd68edpwrVQUNEm0He02SWQmZ3Lcm8+ixdXcdVf4D/+a+08iATIyGl46VRuulYqOJom2o90mifTEdKr91Zw3zs9tt4HTWfd4RkYBcXE+RPz07v0FOTmbG5wRFsDj8bRMwEqdRTRJtB3ttuG6pKoEpzhJiEtg6VLqtTVkZeXTu/cBRGDixOURR1yf6tNPPwUgPj5eG7KViqDUUwpAarw2XMe6dpsk9hTvoW9aX0SESy4J1iT8/i+Pb948EgCn0895561u1LVXrFhhldX1JZQKR2sSbUe7ud30zKpnuOOfd7Aufx3GGNblr2N45nAANm8Gn6/u+cHR1Q78fge7dg1u1M8yxujgOqVOQ5NE29EuahJl1WXcu/BeDIa5G+bywIUPsK94H/dfcD+ffQazZ0MgYKg/0trgdAYijo8IR0RwOByhlep0cJ1S9YUG0+m0HDGvwZqEiCSIyCoR2SgiW0XkEWv/wyJySEQ2WI/pEcpPFZGdIrJHRH5ca3+6iCwWkd3Wc1rzva26dhzbgcHwrbHfIs4Rx28+/Q0A1w+9nqVLwe+vSRCGYGLwM336vxk3biUzZ74acR2JSEaNGsWll16qt5qUiqCsuowkVxJOh7Phk5WtoqlJeIDLjDFlIuIClovIQuvY74wxT0YqKCJO4FlgCnAQWC0i7xpjtgE/Bj4yxjxuJY8fAw+cyZuJZFfRLgBmj5vN09Oe5plVzyAidEnqwiWXQFxcAK9XEDEMHLiTiRM/o2fPg1H1ZjqV0+kkJydHk4NSp1FaXaq3mtqIBpOEMcYAZdZLl/WIrqsPjAP2GGP2AYjIG8A1wDbr+RLrvHnAUlooSewu2o0g9Evrh9Ph5L7x94WO9eyZx8yZH7JvX2+ys3MbXWuozeFwMHXq1LMyQdz57p3knsglNT4Vt9ON2+nG5XCFnl1OV519oXOcdV/XPBLiEoh3xuOQ4NKvDnHgEAdxjjhcDhdxjjjcTjcp7hRS3Ckku5NxSLtpQjvr6frWbUdUbRJWjWAtMAB41hizUkSmAbNF5DZgDfADY0zxKUV7ALWHIB8Ezre2uxpj8gGMMfkiknkG7+O0Kn2VOMTBi+teJNmVXOeDZ/Omzfh7rKN3D0MA+MIqIwgOHAhCnMQFG6PD/AeEtiUgrDi0grLOwZxa84FY8+EWOr9Wf9tT95la+bf2vtDPt56r/dWUekrxBry4HK5GXz/cz3OKE6fDiUMcoZ8DEDABXlr/EgDDM4fj9Xup9lfjDXjDbte+ZnNKcaeQ6k4NPsen1tvuGN+Rjgkd6RDfgU4JnUhLSCMtMa3Oc6IrsUViU42jSaLtiCpJGGP8wCgR6QS8IyLDgeeBRwnWKh4FfgvcfkrRcDdsGvUJIiKzgFkAvXv3bkzRkEGdB+E3fu5ZeE+Tyjcq4vXW4yz00EUP8ciljzR4nj/gp9pfXefhDXhD2x6fhypfFR6/B2MMARPAYPAH/PgCPrwBL76Aj2p/NWXVZZR6SoPP1aXBbW9wX2l1Kfll+ewq2kVpdSklVSVU+ipPG1tNDaWm9lNTa3E6nMFnK1HW3q59bk2NJ9Kjdq2o3oNgTSnRlUhCXELokRj35evTHTv1eJwjun4nXr+XsuoyqnxVYR++gC/0qPnde/3e0LYvEOz6V/M+Tv3CUvtvWLMvYAL1zqu9b2vhVjKTW+x7oWpGjerdZIw5ISJLgam12yJE5AVgQZgiB4Ha9156Aoet7QIRybJqEVnA0Qg/cw4wB2Ds2LFN+op6++jbuWXELZRVl1FWXUZ5dXlo22A4evQoBQUFxMfHc/z4cfbs3RNcI0IM5449l779+nK08ChLly7FBEywduGI4/LJl9M1syvHjh2joKCAbl270TWzK2I1Znj93tAHYa3fVfC5Vv48dZ/UagypvU+Q0LPL6SLVnYrL6cIf8Ee81umuX/u1MQa/8eMP+AmYQJ2fB8EPiKEZQ6P6fTsdThIdibZ8a/f6vZR4SjhRdYLiymKKq4rrPJ/0nAzVemqefcaHP+DHb4JJ6tTtmvMqfZWhD8RoHjUfjLUfpybJM+EUJ/Fx8aFbd/Fx8bidbgImgD/gp8JbwUnPyQYTp10m951sdwgqCg0mCRHJALxWgkgELgd+U/MBb512HbAlTPHVwEAR6QscAm4CbrGOvQvMBB63nv95Ru+kATXfvrokdal/sF/dl3l5eeTm5tYdMT0EpmVPY+PGjQB1G6cHtGDgqlFcThddkrqE/zvHmIAJhBJGpa+yzrf7Su+XryMdq/RV4vF58Pg9oedqfzUOcQQTdVwiHeODt99S3CmhWkjt2kl8XHyd2lRNrammbcjldOEUJyISSj61v0A4xFHny0tj9sU74+3+E6goRFOTyALmWe0SDmC+MWaBiPxZREYRvBmTC9wFICLdgReNMdONMT4RmQ28T3Dh6LnGmK3WdR8H5ovIHcAB4OvN+L7OSK9evcI2Pkfar1RTOMRBoitY40qjxXqAK3VGxIRbICFGjR071qxZs8buMJRSqk0RkbXGmLFNKat9CpVSSkWkSUIppVREmiSUUkpFpElCKaVURJoklFJKRaRJQimlVESaJJRSSkXUpsZJiEghX87B19K6AMda6Wc1hsbVeLEam8bVOLEaF8RubDVx9THGZDTlAm0qSbQmEVnT1MEnLUnjarxYjU3japxYjQtiN7bmiEtvNymllIpIk4RSSqmINElENsfuACLQuBovVmPTuBonVuOC2I3tjOPSNgmllFIRaU1CKaVURJokTiEiOSLymYhsFpF/iUiHWsceFJE9IrJTRK5s5bhGicjnIrJBRNaIyDhrv1tEXrbi3Sgil8RIXC4RmWfFtV1EHoyRuL5h7at5BKx1UWyNyzo20vq3t9X6vSW0Vlyni01EskWkstbv7I+xEFet471FpExEfhgLcYnIuFq/q40icl2MxDVFRNZa/7bWishlUV3QGKOPWg+Cq+ldbG3fDjxqbQ8FNgLxQF9gL+Bsxbg+AKZZ29OBpdb2d4CXre1MYC3giIG4bgHesLaTCC5MlW13XKecMwLY18r/viL9vuKATUCO9bpza/77aiC2bGBLa8bSmL8l8HfgTeCHsRCX9e89ztquWZo5LgbiGg10t7aHA4eiuZ7WJOobDHxibS8Grre2ryH4oecxxuwH9gDjwpRvKQaoqdV05Mu1wocCHwEYY44CJ4DW7K8dKS4DJItIHJAIVAMnYyCu2m4G/tpqEQVFiusKYJMxZiOAMabIGOMPU96O2OwWMS4RuRbYB2ytX6zFhY3LGFNhjPFZ+xOs82IhrvXGmJrf3VYgQUQaXkPWrm8HsfoAVgDXWNvfB0qt7WeAGbXOewn4WivGdQ7BZV7zCK4X3sfaP4vgt6g4gjWcE8D1MRCXC3gDKATKgVmt/HcMG9cp5+wFhsdCXMB3gT8TXOp3HXB/a8bVQGzZ1t9wPfAfYFKMxJUMfAakAA/T+jWJiP/GgPOtD+Iy4LpYiavWOV8DPozmetGscX3WEZEPgW5hDv2U4C2mP4jIQ8C7BL8BA0iY85v1G0IDcU0GvmeM+buI3EAwSV0OzCX4j2INwSlLVgC+MNdo7bjGAX6gO5AGLBORD40x+2yOq6bs+UCFMWZLc8VzhnHFAROB84AK4CNrycmPYiC2fKC3MaZIRMYA/xCRYcaYZqsZNjGuR4DfGWPKRML972lbXBhjVgLDROQcYJ6ILDTGVNkdl1V2GPAbgrXXhrVmhmtrD2AQsMrafhB4sNax94EJrRhLCV92WRbgZITzVgBD7Y4LeBa4tdZ5c4Eb7I6r1vHfAT+x4d9UpN/XTcArtc77OfCjWIgtzHlLgbF2xwUsI9jWlUuwBn0cmG13XGHOWxILvy/rdU9gF3BhtNfTNolTiEim9ewAfgbU9OR4F7hJROJFpC8wEFjViqEdBi62ti8DdltxJolIsrU9BfAZY7bZHRfB6u5lEpQMjAd2xEBcNX/brxO8HdbaIsX1PjDS+nvGWee05t8xYmwikiEiTmu7H8F/+81WI2xqXMaYScaYbGNMNvB/wK+NMc/YHZeI9LX+hohIH4LtnLkxEFcn4N8Ev+x+Gu3F2uXtpgbcLCLfsbbfBl4GMMZsFZH5BP/H9QHfMa3bsPg/wO+tf3xVBNsiINij6X0RCRC8/3hrK8Z0urieJfi720Lw28zLxphNMRAXwEXAQdOMt77ONC5jTLGIPEWwd50B3jPG/DsWYiP4+/qFiPgI3kK82xhzPAbislukuCYCPxYRLxAAvm2Mac0ZYiPFNRsYAPxcRH5u7bvCBDu8RKQjrpVSSkWkt5uUUkpFpElCKaVURJoklFJKRaRJQimlVESaJJRSSkWkSUIppVREmiSUUkpFpElCKaVURP8fSjx6CnEq35MAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#Where in the state do we see Black-heavy home districts?\n",
    "minBlack1 = 0.30\n",
    "minBlack2 = 0.50\n",
    "for t in range(nTracts):\n",
    "    if (HDvBlack[t] > minBlack1 and tractPop[t] > minTractPop):\n",
    "        if (HDvBlack[t] > minBlack2):\n",
    "            plt.scatter(tractCPx[t],tractCPy[t],marker='.',color='blue' )\n",
    "        else :            \n",
    "            plt.scatter(tractCPx[t],tractCPy[t],marker='.',color='gray' )\n",
    "\n",
    "x,y = origMAP.exterior.xy\n",
    "plt.plot(x,y,c=\"green\")\n",
    "plt.show()\n",
    "        "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 97,
   "id": "c5125128-e4bb-4337-bc5e-3f48d7cf404f",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Here's the state map with Hisp+Black greater than  0.4  or even 0.5\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#Where in the state do we see Black+Hispanic heavy home districts?\n",
    "minMinor = 0.40 \n",
    "minMinor2 = 0.50\n",
    "print(\"Here's the state map with Hisp+Black greater than \",minMinor,\"or even\",minMinor2)\n",
    "for t in range(nTracts):\n",
    "    if ((HDvBlack[t] + HDvHisp[t]) > minMinor and tractPop[t] > minTractPop):\n",
    "        if (HDvBlack[t] + HDvHisp[t]) > minMinor2 :\n",
    "            plt.scatter(tractCPx[t],tractCPy[t],marker='.',color='blue' )\n",
    "        else :            \n",
    "            plt.scatter(tractCPx[t],tractCPy[t],marker='.',color='gray' )\n",
    "\n",
    "x,y = tractMAP.exterior.xy\n",
    "plt.plot(x,y,c=\"green\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 98,
   "id": "58119ef8-13ef-4135-9843-6518025dda07",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "this is a histogram of home-district population by tract; avg =  721714.25\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# LET'S VISUALIZE OUR HOME DISTRICT population in a histogram\n",
    "n_bins=50\n",
    "print(\"this is a histogram of home-district population by tract; avg = \",np.sum(tractPop)/nDistricts)        \n",
    "fig, ax = plt.subplots(tight_layout=True)\n",
    "# We can set the number of bins with the *bins* keyword argument.\n",
    "a = avgDistrictPop\n",
    "ax.hist(HDvPop, bins=[0.9*a,0.92*a,0.95*a,0.99*a,1.0*a,1.01*a,1.05*a,1.1*a])   #n_bins\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 99,
   "id": "1f9101bd-108a-48cb-bee5-3f4e04c18132",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "this is a histogram of home-district area by tract\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# more HOME DISTRICT STATS in a histogram\n",
    "n_bins=50\n",
    "print(\"this is a histogram of home-district area by tract\")        \n",
    "fig, ax = plt.subplots(tight_layout=True)\n",
    "# We can set the number of bins with the *bins* keyword argument.\n",
    "ax.hist(HDarea, bins=n_bins)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 100,
   "id": "d8167a80-2b91-4adc-ab34-9e010838213d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# What is the correlation of HD area to red-blue lean?\n",
    "fig, ax = plt.subplots()\n",
    "plt.scatter(HDarea,HDvGOP,marker='.' )\n",
    "ax.set(xlabel=\"tract area\", ylabel=\"home district pct GOP\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 101,
   "id": "cf95cc7c-e58a-4174-94f6-b6d4c7ccb0ff",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# What is the correlation of tract usage to red-blue lean?\n",
    "fig, ax = plt.subplots()\n",
    "plt.scatter(HDvGOP,tractUse, marker='.' )\n",
    "ax.set(xlabel=\"home district pct GOP\", ylabel=\"tractUse\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 102,
   "id": "617384b8-1e0b-45a7-ae09-babe8dd9d429",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# What is the correlation of tract usage to tract population?\n",
    "fig, ax = plt.subplots()\n",
    "plt.scatter(tractPop,tractUse, marker='.' )\n",
    "ax.set(xlabel=\"Census tract population\", ylabel=\"tractUse\")\n",
    "ax.set_xlim(left=0,right=10000)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 103,
   "id": "91f163ab-6b94-47ee-bd29-be3e751fe2b4",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# UPDATED VOTES-SEATS CURVE (from votes2seats.ipynb 1/15/22)\n",
    "# LET'S REWORK OUR VOTES - SEATS CALCULATIONS\n",
    "# FIRST, LET'S DO THE BASIC VOTES-TO-SEATS, no fractional seats\n",
    "# INPUTS ARE HDvGOP[nTracts] and HDweight[nTracts]\n",
    "# HDvGOP is the redness lean of each Census tract's Home District\n",
    "# HDweight is the population of this Census tract relative to the state population\n",
    "# stateGOP is the statewide fraction of GOP vote vs. GOP + Dem vote\n",
    "# KEY EQUATION:\n",
    "# expected Seats at a given vote V = sum(HDweight) for tracts with HDvGOP > 0.5 + (V - stateGOP)\n",
    "# for easy calculation, create ~1000 bins, each bin containing HD's in a dV vote window\n",
    "nBins = 1000\n",
    "dV = 1./nBins\n",
    "binWeight = [0.]*nBins\n",
    "\n",
    "for t in range(nTracts):\n",
    "    binNo = int(HDvGOP[t]*nBins)   #which vote bin does this tract's vote go into for the expected statewide vote?\n",
    "    binWeight[binNo] += HDweight[t]\n",
    "    \n",
    "binVote = [0.]*nBins  #this will store the statewide vote for this bin\n",
    "for b in range(nBins) :\n",
    "    binVote[b] = b*dV\n",
    "\n",
    "fig, ax = plt.subplots()\n",
    "plt.plot(binVote, binWeight, marker='.',linestyle=\"none\")\n",
    "ax.set(xlabel=\"district pct GOP\", ylabel=\"bin weight\")\n",
    "plt.show()   #this should resemble above histogram"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 104,
   "id": "85608d3f-c3bd-4d91-9378-16270ceeb9b6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#continuing with votes-to-seats, let's compute the S(V) curve with no fractional-seat smearing\n",
    "cumVote = [0.]*nBins\n",
    "for b in range(nBins) :\n",
    "    cumVote[nBins-b-1] = np.sum(binWeight[:(b+1)])  #cumulative weight of all Home Districts below vote b*dV\n",
    "    # print(\"bin, bin vote, cumVote for this bin\",b,b*dV,cumVote[b] )\n",
    "    \n",
    "cumSeats = [0.]*nBins  #this will sum the seats earned for a given statewide vote\n",
    "stateVoteBin = int( (stateGOP+0.5*dV)*nBins )   #which bin (out of 1/dV) holds the statewide total vote?\n",
    "for b in range(nBins) :\n",
    "    bb = int( max(0,min(nBins-1,nBins/2 + b-stateVoteBin)) )\n",
    "    cumSeats[b] = 1. - cumVote[bb]\n",
    "\n",
    "fig, ax = plt.subplots()\n",
    "plt.plot(binVote, cumSeats, marker='.',linestyle=\"none\")\n",
    "ax.set(xlabel=\"statewide vote, nBins =\"+str(nBins)+\",\"+str(STATE), ylabel=\"GOP seats won (no fractl smearing)\")\n",
    "RANGE = [0.1, 0.9]\n",
    "fifty50 = [0.5, 0.5]\n",
    "expected = [stateGOP, stateGOP]\n",
    "plt.plot(RANGE,fifty50)\n",
    "plt.plot(fifty50,RANGE)\n",
    "plt.plot(expected,RANGE, linestyle=\"--\",color='red')\n",
    "\n",
    "#LET'S ALSO crudely ESTIMATE RESPONSIVENESS near the STATEWIDE VOTE, with a pseudonormal weighting and lst-sq fit\n",
    "stateSigma = 0.03  #User-adjustable, this is the uncertainty in the statewide vote from election to election\n",
    "usedBins = int(stateSigma/dV)\n",
    "nFitPoints = 6*usedBins\n",
    "voteData = [0.]*nFitPoints\n",
    "seatData = [0.]*nFitPoints\n",
    "counter = 0\n",
    "for b in range(nBins):\n",
    "    if ( abs(b-stateVoteBin) <= 2*usedBins ):  #include this S-V pair in our line fit\n",
    "        voteData[counter]=binVote[b]\n",
    "        seatData[counter]=cumSeats[b]\n",
    "        counter += 1\n",
    "        # print(b,counter)\n",
    "        if ( abs(b-stateVoteBin) < usedBins) : #double count this in data set\n",
    "            voteData[counter]=binVote[b]\n",
    "            seatData[counter]=cumSeats[b]\n",
    "            counter +=1\n",
    "fit = np.polyfit(voteData,seatData,1)  #first-order linear regression with old polyfit\n",
    "Rsimple = fit[0]     #slope is fit[0] in y = mx + b, intercept is fit[1]\n",
    "y0 = fit[1]\n",
    "Rx = [stateGOP - 4.*stateSigma, stateGOP + 4.*stateSigma]\n",
    "Ry = [y0 + Rx[0]*Rsimple, y0 + Rx[1]*Rsimple]\n",
    "plt.plot(Rx,Ry ) \n",
    "ax.text(Rx[1]+0.02, Ry[1]+0.02, \"R = \"+str(round(Rsimple,4)), transform=ax.transAxes, fontsize=14,color='purple')\n",
    "expectedSeats = cumSeats[stateVoteBin]\n",
    "ax.text(0.02,expectedSeats+0.03,\"expected seats = \"+str(round(expectedSeats,3)),transform=ax.transAxes,fontsize=9)\n",
    "ax.text(stateGOP+0.01,0.1,\"HD statewide vote = \"+str(round(stateGOP2,3)),transform=ax.transAxes,fontsize=9)\n",
    "Ex = [0,stateGOP ]\n",
    "Ey = [expectedSeats, expectedSeats]\n",
    "plt.plot(Ex,Ey, linestyle='-.',color='red')\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 105,
   "id": "7e3774e6-1c82-41f0-b3d9-84017d8eed9b",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "constant statewide, working on home district number  0\n",
      "constant statewide, working on home district number  200\n",
      "constant statewide, working on home district number  400\n",
      "constant statewide, working on home district number  600\n",
      "constant statewide, working on home district number  800\n",
      "constant statewide, working on home district number  1000\n",
      "constant statewide, working on home district number  1200\n",
      "constant statewide, working on home district number  1400\n",
      "variable statewide, working on bin number  0\n",
      "variable statewide, working on bin number  200\n",
      "variable statewide, working on bin number  400\n",
      "variable statewide, working on bin number  600\n",
      "variable statewide, working on bin number  800\n",
      "hd-based smeared statewide vote was 0.429579 (from mean of 0.429568), expected was 0.43061680507699845\n",
      "fSum, f2sum, dV were  0.9999988919420362 0.999998891942001 0.001\n",
      "exp seat fraction is 0.3254761854319535 (or 0.32447510202299334 if we include state outcome variance) \n",
      "responsiveness for the map = 3.0335737529433566 using district variance 0.05 and statewide variance 0.03\n"
     ]
    }
   ],
   "source": [
    "# THIS BLOCK: COMPUTING FINAL STATS with FRACTIONAL-SEAT SMEARING (about 2min for 3200 tracts)\n",
    "#  NEED ** TO ** REWORK FROM VOTES2SEATS CODE ***\n",
    "nHDs = len(HDweight)\n",
    "seatVar = 0.05  #this is the normal variance in the outcome of a district race\n",
    "stateVar = 0.03  #this is the normal variance in the statewide vote (to account for blue- and red-wave years)\n",
    "\n",
    "maxSD = 3.1  #we truncate normal distributions more than 3.1 sigma away (0.1% tail on either side)\n",
    "#nBins = xxx, dV = 1./nBins  #passed from above sections\n",
    "#nTracts = ..., nHDs = nTracts    #**(passed) this will be passed from above code\n",
    "f_V = [0.]*nBins  #binned votes curve with fractional seats\n",
    "f2_V = [0.]*nBins #binned votes curve with variation in statewide outcome\n",
    "totalF = 0.  #for normalizing f(V)\n",
    "stateAvg1 = 0.\n",
    "printInterval = 200 #for tracking our progress\n",
    "HDsum = np.sum(HDweight)\n",
    "for hd in range(nHDs):\n",
    "    HDweight[hd] = HDweight[hd] / HDsum  #normalize home district weights before we start\n",
    "    stateAvg1 += HDweight[hd]*HDvGOP[hd]  #first pass on hd-based statewide vote (no fractional seat smearing)\n",
    "    \n",
    "for hd in range(nHDs):   #votes curve to seats curve first loop: statewide vote is constant  \n",
    "    if hd % printInterval == 0 :\n",
    "        print(\"constant statewide, working on home district number \",hd) \n",
    "    HDv = HDvGOP[hd] #shorthand for GOP vote in home district number = hd\n",
    "    lowBin =  max(0, int(round( (HDv-maxSD*seatVar)/dV, 0)) )   #b.c. convolution for bins below v = vLow is negligible\n",
    "    highBin = min(nBins-1, int(round( (HDv+maxSD*seatVar)/dV, 0)) )\n",
    "    vLow =  dV * lowBin\n",
    "    vHigh = dV * highBin  \n",
    "    f_V[lowBin] +=  HDweight[hd]*norm.cdf((vLow+0.5*dV - HDv)/seatVar)      #truncate left tail, assign to leftmost bin in this group\n",
    "    f_V[highBin] += HDweight[hd]*(1-norm.cdf((vHigh-0.5*dV - HDv)/seatVar)) #and assign all of right tail to rightmost bin in this group\n",
    "    for bin in range(lowBin+1,highBin,1) : #only convolute between these tails\n",
    "        v = dV * (bin + 0.5)  #mean vote is in middle of bin range\n",
    "        lowD = v - 0.5*dV - HDv  #difference between left edge of bin and home-district's GOP lean\n",
    "        hiD = v + 0.5*dV - HDv   #same, right edge\n",
    "        # delta = v - HDv  #signed difference between middle of this vote interval bin and h.d. GOP lean   \n",
    "        f_V[bin] += HDweight[hd]*( norm.cdf(hiD/seatVar)-norm.cdf(lowD/seatVar) )\n",
    "        # fracOfHDinthisVinterval = same as above\n",
    "        # print(HDv,v,dV,fracOfHDinthisVinterval,\"HDV,v,dV,fracOfHDinthisVinterval\")\n",
    "\n",
    "stateAvg2 = 0.     #let's check the statewide vote\n",
    "for bin in range(nBins):  \n",
    "    if bin % printInterval == 0 :\n",
    "        print(\"variable statewide, working on bin number \",bin) \n",
    "    stateAvg2 += f_V[bin]*((bin+0.5)*dV)\n",
    "        # now do binning for votes curve with statewide variation.  Approximation to rigorous but slow double-convoluting\n",
    "    binV = dV * (bin+0.5)\n",
    "    lowBin2 = max(0, bin - int(round(maxSD*stateVar/dV,0)) )   #again, left & right tail truncation\n",
    "    highBin2 = min(nBins-1,bin + int(round(maxSD*stateVar/dV,0)) )\n",
    "    vLow2 =  dV * (lowBin2+0.5)\n",
    "    vHigh2 = dV * (highBin2+0.5)\n",
    "    f2_V[lowBin2] +=  f_V[bin]*norm.cdf((vLow2+0.5*dV - binV)/stateVar)      #same truncation, but with statewide spread\n",
    "    f2_V[highBin2] += f_V[bin]*(1-norm.cdf((vHigh2-0.5*dV - binV)/stateVar))\n",
    "    for bin2 in range(lowBin2+1, highBin2, 1) : #only convolute between these tails\n",
    "        v = dV * (bin2 + 0.5)  #center of new bin\n",
    "        lowD = v - 0.5*dV - binV  #difference between left edge of new bin and old bin\n",
    "        hiD =  v + 0.5*dV - binV\n",
    "        f2_V[bin2] += f_V[bin]*( norm.cdf(hiD/stateVar)-norm.cdf(lowD/stateVar) )\n",
    "\n",
    "stateAvg1 = round(stateAvg1,6)\n",
    "stateAvg2 = round(stateAvg2,6)\n",
    "print(\"hd-based smeared statewide vote was {0} (from mean of {1}), expected was {2}\".format(stateAvg2, stateAvg1,stateGOP) )\n",
    "fSum = 0.\n",
    "f2Sum = 0.\n",
    "for bin in range (nBins) : #do a quick normalization, though these are close to unity\n",
    "    fSum += f_V[bin]\n",
    "    f2Sum += f2_V[bin]\n",
    "for bin in range (nBins):\n",
    "    f_V[bin] = f_V[bin]/fSum\n",
    "    f2_V[bin] = f2_V[bin]/f2Sum\n",
    "    \n",
    "expSeatFrac = 1.\n",
    "varSeatFrac = 1.\n",
    "print(\"fSum, f2sum, dV were \",fSum, f2Sum, dV)\n",
    "for bin in range (nBins) :\n",
    "    vMID = (bin + 0.5) * dV\n",
    "    vMin = vMID - 0.5 * dV\n",
    "    vMax = vMin + dV\n",
    "    weight = max(0,min( (0.5-vMin)/(vMax - vMin), 1 ) )   #use lever rule if this bin straddles the toss-up point\n",
    "    expSeatFrac -= weight * f_V[bin]\n",
    "    varSeatFrac -= weight* f2_V[bin]\n",
    "print(\"exp seat fraction is {0} (or {1} if we include state outcome variance) \".format(expSeatFrac,varSeatFrac) ) \n",
    "\n",
    "R = f2_V[int(nBins/2)]  / dV  #responsiveness is dS-dV at the toss-up point (after smoothing from state and local uncert'ys        \n",
    "print(\"responsiveness for the map = {0} using district variance {1} and statewide variance {2}\".format(R,seatVar,stateVar) )\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 106,
   "id": "1661890d-4bf0-4361-a57a-336189fc85b6",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "distribution of seats for state =  CO\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# LET'S PLOT OUR OUTPUTS\n",
    "print(\"distribution of seats for state = \",STATE)\n",
    "vPlot = [0]*nBins\n",
    "for i in range(nBins) :\n",
    "     vPlot[i]=i*dV+0.5*dV\n",
    "seatRange = [0., np.max(f_V)]\n",
    "exp = [stateGOP,stateGOP]\n",
    "plt.plot(vPlot, f_V, label='S(V) at expd statewide vote')\n",
    "plt.plot(vPlot, f2_V,label=\"S(V) w varied statewide\")\n",
    "plt.plot(exp,seatRange)\n",
    "plt.xlabel('district vote')\n",
    "plt.ylabel('seat frequency')\n",
    "plt.legend(loc=\"lower right\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 107,
   "id": "6a8e043a-c560-4e06-a917-091d87a6fd3a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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GMr5S9G80NF6FzXe5c7D4q+BSJyHxAAHgTc9FpExOcCBUxf47q99dGtUluol8nk7HJPDuVMRVFHV94AoAFW9iNOM1BiTRh/N34EIPNPOXh4z3udORXBJRHJzZTyCKjhXCMaYNNh8OIzp6w7Rr3klShXI7e1wjHGr1dBIYC5QTkS+B5oDfT0ZlDHZ2btzt1Mgtz9PBFfxdijGAO61GpovIv8AN+PcEhqkqic8HpkxnvLcc17b9bLQEyzecZyX77iBArn9vRaHMfG51dcQUAbwdaVvKSKo6i+eC8sYD7rzTq/sNjZWGTVnG2UK5qbXzdZLi8k83Gk+OgGYANwL3Oma3Go+KiIdRWS7iISKyLBk0t0kIjEikumGwJw0aRJNmjTh9dezXh97e/fuZdmyZanKU7Vq1XSPY/r06ezfvz/dtztx4kRuueUWmjdvzj//XDs8xpQpU7j11ltp2bIlnTt35uzZswBcWLeOR+67j9tuu43g4GBOnz4NQNu2bQkODqZx48ZMnjw53eOds+koGw+F8Wy76taVhMlU3LkiuFlVa6V2w65hLj8D2uE0OV0lIjNUdUsi6d4F/kjtPjLCd999x48//kilSlf3qhETE4Ovb+b+z7x3716WL1/u7TCYPn06RYsWpXz58um2zdOnTzN69GhWrFjBoUOH6N27N0uXLr0qzT333MMDDzwAwIgRI/juu+946qmneK1LF+4vWJD2GzZclX727NkEBARw9uxZ6tevz4MPPphu8cbEKh/N30614kHcdWOZdNuuMenBnVZDf4lIqisCoAkQqqq7VfUSMAXomki6p4FpwL9p2MdV9u7dS5MmTejfvz8NGzbkv//9LwDHjh2jU6dODBo0iNtvv53jx48DztnvyJEjadWqFd0T6XZg/PjxrFy5kh49ejB16lT69u3LgAED6Ny5M0uWLKFPnz4EBwfTsGFDZsyYATgHqHvvvZdWrVrRunVrjh49etU2Dxw4wB133EGbNm244447OH78OKGhodxyyy1cvHiRP//8k7vvvhuAvn378vjjj9OxY0datWrFkSNHAPj5559p0aIFt956a9yVyqVLl+jfvz8tWrSgdevWrF+/no8++ogVK1YQHBzMmjVr2LhxI23btqVNmzbcf//9XLzodCM1ZMgQmjVrxoABA4iKunY46ilTptCkSRNat27N8OHDAVi0aBGt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unTpQu7cuQHnhbeBAweybt06fH192bHDGYxwwYIF9OvXjzx58gBQuHDhZLe5atUqgoODKVasGAD3338/ixcv5q677iIgIIDOnZ0OAxs1asT8+fOvyb906VKmTXNOANq0acPJkycJC0u+67R69erRs2dP7rrrLu666y4A5s2bx4wZM/jggw8Ap/nu/v37KV26dKLlTKhZs2a89dZbHDx4kHvuucfrVwOQ/BVBDZwmpAWBO+MtPwc86sGYjLluf+85xbM/rqdxhUJ8cF99JPIcLBsN1TtCWbuY9bS8efPGff/4448pUaIE69evJzY2lsBA5zxSVVPV1NEZfz1x/v7+cdvy9fUlOjrarfwp7X/WrFksXryYGTNm8MYbb7B582ZUlWnTplGjRo2r0r766quJljOhHj160LRpU2bNmkWHDh0YN24cbdp4912WJFsNqepvqtoP6Kyq/eJN/1HV5RkYozGpcuBcLI9+u5qyhXPz1UONCfT3hZVjIOIMBA/3dng5TlhYGKVKlcLHx4fvvvsu7lZI+/btmTBhAhcuXACce/gA+fLl49y5c9dsp2nTpixatIgTJ04QExPD1KlTadWqldtxtGzZku+//x6AkJAQihYtSv78SXeZFhsby4EDB2jdujXvvfceZ86cITw8nA4dOvDJJ5/EVSxr165NtpwJy7N7924qV67Mf/7zH7p06cKGDRvcLoOnuPOMYK2IPIVr8PrLC1W1v8eiMiaNdh47x3urLpInMBcT+zahUN4AuHgGln8KNTtD6QbeDjHHefLJJ7n33nv5+eefad26ddzVQseOHVm3bh2NGzcmICCA22+/nbfffpu+ffsyYMCAuIfFl5UqVYp33nmH1q1bo6q0bduWrl27uh3Hq6++Sr9+/ahXrx558uThm2++STZ9TEwMvXr1IiwsDFXlmWeeoWDBgrzyyisMHjyYevXqoapUrFiRmTNnJlnOevXq4efnR/369enbty8RERFMmjQJf39/SpYsyYgRI9LwV01fktzlFoCI/AxsA3oArwM9ga2qOsjz4V2rcePGunr16jTlDQkJITg4OH0DyuRyUplD/w3ngbEriIq6xC8DW1KlWJCz4v/egsXvwYClULKud4P0gK1bt1K2bFnrdycHcLfMW7du5YYbbrhqmYisUdXGiaV3ZzyCqqr6CnBeVb8B7gCy3/8mk6VtOHiG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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# PLOT THE CUMULATIVE SEATS-VOTES CURVE, OVERLAY RESPONSIVENESS  #  **MATH LOOKS WRONG FOR NEW JERSEY**\n",
    "cumSeats = [0.]*nBins\n",
    "for bin in range(1,nBins-1):\n",
    "    cumSeats[bin]=cumSeats[bin-1]+ (0.5*f2_V[nBins-bin]+0.5*f2_V[nBins-bin-1] )\n",
    "cumSeats[nBins-1] = 1.\n",
    "\n",
    "minVote = stateAvg2 - stateVar\n",
    "maxVote = stateAvg2 + stateVar\n",
    "seatsX = [minVote, maxVote]\n",
    "minSeats = varSeatFrac + R* (minVote - 0.5)\n",
    "maxSeats = varSeatFrac + R* (maxVote - 0.5)\n",
    "seatsY = [minSeats,maxSeats]\n",
    "fifty50 = [0.50, 0.50]\n",
    "stringR = str(round(R,4))\n",
    "fig, ax = plt.subplots()\n",
    "plt.plot(vPlot, cumSeats, label='fraction of seats')\n",
    "plt.plot(seatsX,seatsY, label=\"respvness =\"+stringR)\n",
    "RANGE = [0.1, 0.9]\n",
    "fifty50 = [0.5, 0.5]\n",
    "expected = [stateGOP, stateGOP]\n",
    "plt.plot(RANGE,fifty50)\n",
    "plt.plot(fifty50,RANGE)\n",
    "plt.plot(expected,RANGE, linestyle=\"--\",color='red')\n",
    "ax.text(0.02,expectedSeats+0.03,\"non-frac expected seats = \"\n",
    "        +str(round(expectedSeats,3)),transform=ax.transAxes,fontsize=9)\n",
    "ax.text(.2,0.9,\"HD statewide vote = \"+str(round(stateGOP2,3)),transform=ax.transAxes,fontsize=9,color=\"red\")\n",
    "Ex = [0,stateGOP ]\n",
    "plt.grid()\n",
    "i_avg = int(round(stateGOP2/dV - 0.5,0))\n",
    "seats_avg = str(round(cumSeats[i_avg],5))\n",
    "plt.xlabel('statewide vote')\n",
    "plt.ylabel('seat fraction, smeared expctd ='+seats_avg)\n",
    "plt.legend(loc=\"lower right\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 108,
   "id": "18767504-3fc9-4bef-9fb6-7ead3a92e3e2",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "fractional expected GOP seats =  1.0344  out of  8 seats.  THIS IS WRONG\n",
      "simpler expected GOP seats =  2.9063  out of  8 seats\n"
     ]
    }
   ],
   "source": [
    "print(\"fractional expected GOP seats = \",nDistricts*float(seats_avg),\" out of \",nDistricts,\"seats.  THIS IS WRONG\")\n",
    "print(\"simpler expected GOP seats = \",round(nDistricts*expectedSeats,4),\" out of \",nDistricts,\"seats\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "86f82727-7193-4194-aa61-2b99408dbcb6",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
